Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 通过HTTP发送10000个Double的最佳方式_Iphone_Google App Engine_Ios_Ios4_Double - Fatal编程技术网

Iphone 通过HTTP发送10000个Double的最佳方式

Iphone 通过HTTP发送10000个Double的最佳方式,iphone,google-app-engine,ios,ios4,double,Iphone,Google App Engine,Ios,Ios4,Double,我有一个客户端应用程序(iPhone),可以收集10000个翻倍。我想通过HTTP将这个双数组发送到appengine服务器(java)。我在寻找最好的方法 Best可以定义为编程的简单性和表示的紧凑性的某种组合,因为数据量可能相当高 我目前的想法是将整个double数组转换为字符串表示,并将其作为POST参数发送,在服务器上解析字符串并转换回double数组。看起来效率很低 谢谢 json 对于iphone,使用yajl-obj-c编码 对于java,使用jsonarray读取 对于iphon

我有一个客户端应用程序(iPhone),可以收集10000个翻倍。我想通过HTTP将这个双数组发送到appengine服务器(java)。我在寻找最好的方法

Best可以定义为编程的简单性和表示的紧凑性的某种组合,因为数据量可能相当高

我目前的想法是将整个double数组转换为字符串表示,并将其作为POST参数发送,在服务器上解析字符串并转换回double数组。看起来效率很低

谢谢

json

对于iphone,使用yajl-obj-c编码

对于java,使用jsonarray读取

对于iphone,使用yajl-obj-c编码


对于使用jsonarray阅读java,我想有很多不同的方法可以做到这一点。如果是我的话,我可能只是将其序列化为一个字节数组,然后对其进行base64编码,大多数其他机制都会显著增加所传递的数据量。

我想有很多不同的方法可以做到这一点。如果是我,我可能只是将其序列化为一个字节数组,然后对其进行base64编码,大多数其他机制都会显著增加传递的数据量。

如果您有一个工作方法,并且尚未发现性能问题,那么您现在使用的方法就可以了

除非你知道它不能满足你的需要,否则不要试图找到更好的方法

在java端,一个双精度(64字节)大约是4个字符(16字节*4)。现在,当我想到你的平均双精度,比如说10位数字和一个小数点,再加上一些分隔符,比如一个分号空格,你看到的是每个小数点大约12个字符。这只是3倍


原来有80k的数据,现在有240k的数据。这真的有那么大的区别吗?

如果您有一种工作方法,但还没有发现性能问题,那么您现在使用的方法就可以了

除非你知道它不能满足你的需要,否则不要试图找到更好的方法

在java端,一个双精度(64字节)大约是4个字符(16字节*4)。现在,当我想到你的平均双精度,比如说10位数字和一个小数点,再加上一些分隔符,比如一个分号空格,你看到的是每个小数点大约12个字符。这只是3倍


原来有80k的数据,现在有240k的数据。这真的有那么大的不同吗?

我想你已经回答了你自己的问题:)要注意的一点是设备和服务器上的浮点表示之间的差异。这些天,他们都将是小恩迪安,(大部分)IEEE-754兼容。然而,在实现中仍然可能存在一些细微的差异,例如对非规范化和无穷大的处理,但您可能忽略它们。我似乎记得NEON(用于iPhone的Cortex a-8)中的一些边缘盒与x86的处理方式不同

如果您确实以字符串形式发送,那么最终将在两者之间进行十进制和二进制转换,并且可能会失去准确性。不过,这并没有那么低效——只有10000个数字。除非你期待成千上万的设备在你的服务器上不停地传输这些数据


如果您希望在电汇和设备方面有一些效率,那么一种方法就是以原始二进制形式发送double。在服务器上,将它们重新分析为Double(Double.longBitsToDouble)。确保在抓取长数据时正确使用endian(错误时这一点很明显)。

我想你已经回答了自己的问题:)要注意的一件大事是设备和服务器上的浮点表示之间的差异。这些天,他们都将是小恩迪安,(大部分)IEEE-754兼容。然而,在实现中仍然可能存在一些细微的差异,例如对非规范化和无穷大的处理,但您可能忽略它们。我似乎记得NEON(用于iPhone的Cortex a-8)中的一些边缘盒与x86的处理方式不同

如果您确实以字符串形式发送,那么最终将在两者之间进行十进制和二进制转换,并且可能会失去准确性。不过,这并没有那么低效——只有10000个数字。除非你期待成千上万的设备在你的服务器上不停地传输这些数据


如果您希望在电汇和设备方面有一些效率,那么一种方法就是以原始二进制形式发送double。在服务器上,将它们重新分析为Double(Double.longBitsToDouble)。当你抓取长的数据时,确保你的尾数是正确的(当它错误时,这是非常明显的)。

10k doubles是80k二进制字节,大约107k左右的字符是base64编码的。或者,3个双精度是24个二进制字节,32个base64个字符。有大量base64转换示例源代码可用


这比任何十进制表示转换都更可取,因为十进制转换更慢,更糟糕的是,可能有损

10k doubles是80k二进制字节,大约107k个字符是base64编码的。或者,3个双精度是24个二进制字节,32个base64个字符。有大量base64转换示例源代码可用


这比任何十进制表示转换都更可取,因为十进制转换更慢,更糟糕的是,可能有损

你知道这种方法在尺寸方面有多有效吗?它当然很容易实现,只是不确定数据传输会有多大……你知道这种方法在大小方面有多有效吗?它当然很容易实现,只是不确定数据传输会有多大……同意你的观点,但没有一个可行的解决方案。之前