1

对于大多数美国人在家中的连接,从客户端的浏览器向互联网服务器(例如 Google 应用引擎)发送 200,000 个整数的列表大约需要多长时间?如果数据是从 iPhone 发送的,它会发生很大变化吗?

随着整数列表大小的增加(比如一百万个整数的列表),时间长度如何增加?

背景:我不确定我是否应该编写代码来为javascript中的浏览器或python中的服务器执行一些简单的计算和排序,所以我想探讨发送输出需要多长时间的问题通过网络从浏览器到服务器的数据,以帮助我决定在哪里(客户端的浏览器或应用程序引擎服务器)是处理此类计算的最佳位置。

更多背景:

整数类型:我正在处理 2 个整数列表。一个是 200,000 个对象的 id 列表,其整数看起来像 {0,1,2,3,...,99,999}。100,000 的第二个列表只是个位数 {...,4,5,6,7,8,9,0,1,...} 。

计算类型:人们将通过浏览器创建自己的自定义索引(或排名),基于更改与引用 100,000 个对象的大约 10 个变量相关的权重。索引 = w1*Var1 + w2*Var2 + ... wNVarN。所以计算是指向量(数组)乘法到一个标量和 2 个向量的加法,以及对 100,000 个值的最终 INDEX 变量向量进行排序。

4

4 回答 4

2

简而言之...

这可能是个坏主意,

特别是对于移动设备,除了与转移相关的延迟外,与超出各种计划限制的月交易量相关的限制和/或额外费用使这是一个糟糕的经济选择......

粗略估计(下面有更多信息)是单向传输需要0.7 到 5 秒
这个估计有很大的可变性,主要是由于两个因素

  • 网络技术与规划
  • 200k 整数可以得到的压缩比。

由于网络特性或多或少是给定的,因此最显着的改进将来自压缩比。这又在很大程度上取决于 200,000 个整数的统计分布。例如,如果它们中的大多数都小于 65,000,那么列表很可能会压缩到其原始大小的 25% 左右(大小减少 75%)。所提供的时间估计假设尺寸仅减少 25% 到 50%。

另一个网络考虑因素是二进制 mime 扩展(8 位 mime)的可用性,这将避免例如 B64 的 33% 开销。

其他考虑/想法

  • iPhone / 移动设备计划的这种类型的网络使用情况不会很好!!!
    ATT 会爱你(也许),你的最终用户会恨你,至少是那些有计划限制的人,很多人(大多数?)都有。
  • 您可以将列表拆分为 3 或 4 个块,而不是发送一个大列表,从而允许服务器端排序 [大部分] 与数据传输并行进行。
  • 当整数[粗略]排序时,整数的压缩率会更好,也许你可以在客户端进行第一次排序。

我怎么算?...

1) Amount of data to transfer (one-way)
  200,000  integers 
    = 800,000 bytes  (assumes 4 bytes integers)
    = 400,000 to 600,000 bytes compressed  (you'll want to compress!)
    = 533,000 to 800,000 bytes in B64 format for MIME encoding

2) Time to upload   (varies greatly...)
    Low-end home setup (ADSL)  = 3 to 5 seconds
    broadband (eg DOCSIS)      = 0.7 to 1 second
    iPhone                     = 0.7 to 5 seconds possibly worse;
                                        possibly a bit better with high-end plan

3) Time to download (back from server, once list is sorted)
   Assume same or slightly less than upload time.
   With portable devices, the differential is more notable.
   The question is unclear of what would have to be done with the resulting 
   (sorted) array; so I didn't worry to much about the "return trip".
   ==> Multiply by 2 (or 1.8) for a safe estimate of a round trip, or inquire
       about specific network/technlogy.
于 2010-03-18T04:24:15.663 回答
0

由于您将数据从 JavaScript 发送到服务器,因此您将使用文本表示。大小很大程度上取决于每个整数中的位数。是在谈论 200,000 个 2 到 3 位整数还是 6 到 8 位整数?它还取决于是否启用了 HTTP 压缩以及 iPhone 上的 Safari 是否支持它(我不确定)。

时间量将是线性的,具体取决于大小。iPhone 上的典型上传速度会因用户使用的是商务 wifi、公共 wifi、家庭 wifi、3G 还是边缘网络而有很大差异。

如果您如此依赖性能,那么这可能更适合原生应用程序而不是 HTML 应用程序。即使您不在客户端进行计算,您也可以发送/接收二进制数据并对其进行压缩,从而减少时间。

于 2010-03-18T02:41:29.893 回答
0

默认情况下,整数通常存储在 32 位值或 4 个字节中。那么 200,000 个整数将是 800,000 字节,即 781.25 KB。这将取决于客户端的上传速度,但在 640Kbps 上传时,大约需要 10 秒。

于 2010-03-18T02:26:19.270 回答
0

那是 800000 字节或 781.3 kb,或者你可以说是普通 jpeg 照片的大小。对于宽带,这将在几秒钟内完成,您可以随时考虑压缩(有这方面的库)

数据的时间线性增加。

于 2010-03-18T02:28:56.993 回答