问题标签 [latency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - iPhone ARMv6 VFP asm 延迟、吞吐量和危害
在本文档中:http: //infocenter.arm.com/help/topic/com.arm.doc.ddi0301g/DDI0301G_arm1176jzfs_r0p7_trm.pdf
在第 21-25 页(pdf 第 875 页)上,给出了 VFP 单元的组装指令的吞吐量和延迟时间。
这些数字与向量大小无关吗?
1:让我们以 FMULS 为例,它的吞吐量为 1,延迟为 8。这是否意味着如果我不使用当前不是由前一个函数计算的寄存器,我可以在每个周期开始一个新的 FMULS 操作?例如:
那些会在彼此之后执行吗?
2:如果我有两个 FMULS 函数,其中一个参数取决于先前的计算,会发生什么情况
VFP 会在开始处理第二条指令之前等待 8 个周期吗?
3:如果我们处于具有 4 个元素的向量模式,并且在第二条 FMULS 指令中,所有输入寄存器都可用,但只有一个可用。会发生什么?
4:sqrt 和除法:sqrt 或除法操作是否会阻止任何后续操作在 19 个周期内启动?
谢谢!
java - 用于设计可扩展 Web 服务的模式
我正在用 Java 编写一个需要每秒处理大量请求的 Web 服务。一般流程将是:
- Web 服务接收来自客户端的请求
- 向客户端返回“继续轮询我”响应
- 调用另一个 Web 服务(或服务),并等待它们响应(超时)
- 客户端轮询我们的 Web 服务,直到它收到响应(超时)
在互联网上研究,我发现了两种编写 Web 服务的通用方法:
- 为每个请求生成一个线程
- 使用 Reactor 模式(中央调度线程响应 IO 事件)
您对哪种方法通常更好有什么建议,每种方法的优缺点是什么?我也将不胜感激的例子。
iphone - iPhone mmorpg 中的高延迟
现在我正在尝试为 iPhone 制作一个 mmorpg。我已将其设置为 iPhone 每秒多次请求播放器位置。它是如何做到这一点的,客户端使用异步 NSURLConnection 向 php 页面发送请求,该页面从 mysql 数据库加载位置并以 json 形式返回。但是,从请求位置到实际加载位置大约需要 0.5 秒。这似乎真的很高,是否有任何明显的事情可能导致这种情况?
此外,这也会导致客户端上的玩家移动也非常不稳定。是否有任何算法或方法来减少玩家运动的不连贯性?
c - (如何)我可以减少套接字延迟吗?
我编写了一个 HTTP 代理,它做了一些在这里不相关的事情,但它大大增加了客户端的服务时间(没有代理的 600us 与有它的 60000us)。我想我已经找到了大部分时间的来源——在我的代理完成发送回客户端和客户端完成接收之间。目前,服务器、代理和客户端运行在同一台主机上,使用 localhost 作为地址。
一旦代理完成发送(至少从 send() 返回),我打印 gettimeofday 的结果,它给出了一个绝对时间。当我的客户收到后,它会打印 gettimeofday 的结果。由于它们都在同一主机上,因此这应该是准确的。所有 send() 调用都没有标志,因此它们是阻塞的。两者相差约40000us。
它侦听客户端连接的代理套接字设置有提示 AF_UNSPEC、SOCK_STREAM 和 AI_PASSIVE。大概来自接受()的套接字将具有相同的参数?
如果我正确理解这一切,Apache 设法在 600us 内完成所有工作(包括导致 40000us 延迟的任何东西)。任何人都可以提出可能导致这种情况的原因吗?我已经尝试设置 TCP_NODELAY 选项(我知道我不应该,这只是为了看看它是否有所不同)并且完成发送和完成接收之间的延迟下降了,我忘记了数字但 <1000us。
这一切都在 Ubuntu Linux 2.6.31-19 上。谢谢你的帮助
linux - Linux 多播中排队/缓冲延迟的可能位置在哪里?
我们在 LAN 上的许多 Linux 服务器上大量使用多播消息传递。我们看到很多延误。我们基本上会发送大量的小包裹。我们更关心延迟而不是吞吐量。这些机器都是现代的多核机器(如果算上超线程,至少有 4 个,通常是 8 个,16 个)机器,负载总是 2.0 或更低,通常负载小于 1.0。网络硬件的容量也低于 50%。
我们看到的延迟看起来像排队延迟:数据包将迅速开始增加延迟,直到看起来它们堵塞,然后恢复正常。
消息传递结构基本上是这样的:在“发送线程”中,从队列中拉出消息,添加时间戳(使用gettimeofday()
),然后调用send()
. 接收程序接收消息,为接收时间加上时间戳,并将其推送到队列中。在一个单独的线程中,处理队列,分析发送和接收时间戳之间的差异。(请注意,我们的内部队列不是问题的一部分,因为时间戳是在我们的内部队列之外添加的。)
我们真的不知道从哪里开始寻找这个问题的答案。我们不熟悉 Linux 内部结构。我们的怀疑是内核在发送端或接收端(或两者)对数据包进行排队或缓冲。但我们不知道如何追踪和追踪它。
值得一提的是,我们使用的是 CentOS 4.x(RHEL 内核 2.6.9)。
c# - TcpClient 的创建开销大吗?
我尝试使用 TcpClient 发送/接收数据。我做了两个实验,发现了一些有趣的东西。
我在日本的服务器和英国的 TcpClient 中设置了 TcpListener。我一直向 TcpListener 发送 500 个字节,当 TcpListener 将 10KB 发送回 TcpClient 时。我在每个实验中保持这个发送/接收循环 500 次。
实验一:
在每个发送/接收循环中,我创建一个全新的 TcpClient(从创建之前开始计时)并发送/接收
实验二:
对于所有循环,我只有一个 TcpClient,它保持与 TcpListener 的连接并进行 500 次发送/接收。
结果:
一个循环的时间成本的平均值:
E1:1.8 秒,E2:0.49 秒。
我对这个结果感到非常惊讶。所以保持连接以持续发送/接收可以节省很多时间???将近 2/3 的时间。
这是真的???
谢谢
====新====
@Jon Skeet,@dbemerlin,感谢您的回复。我猜想 Tcp 握手需要一些时间工具。
所以我做了实验3。
我将 HttpListener 设置为服务器并使用 WebClient 发送/接收,数据大小完全相同。每次我使用新的 WebClient 在英国和日本之间发送/接收时。
结果为 0.86(500 次循环的平均值,即发送/接收)。
我假设 WebClient / HttpLisener 本身就是 Tcp,对吧?在我的实验中,它们如何比原始 TcpClient/TcpListener 更快?
再次感谢
java - 在基于 restlet 的 web 服务中记录响应时间
记录基于 restlet 的 web 服务的响应时间的最简单方法是什么?
我想确保我们的网络服务有合理的响应时间。所以我希望能够密切关注响应时间,并对耗时过长的请求做一些事情。
我能找到的最接近的是这个食谱: http: //www.naviquan.com/blog/restlet-cookbook-log,它解释了如何更改日志格式。但是似乎没有响应时间的参数,因此可能需要一种完全不同的方法。
javascript - SoundManager2 有不规则的延迟
我定期弹奏一些音符。每一个都会延迟随机数毫秒,从而产生不规则的不规则效果。我如何解决它?
注意:我可以接受一些延迟,只要它是一致的。
“实现您自己的小型 SoundManager2 替换,针对时间敏感的播放进行优化”类型的答案是可以的,如果您知道如何做到这一点:) 但我现在试图避免在 Flash 中重写我的整个应用程序。
有关具有零可听延迟的应用程序示例,请参阅基于闪存的ToneMatrix。
测试用例(在此处实时查看或以 zip 格式获取):
optimization - 一个数据包在北大西洋上空/下的理论最小往返时间?
我正在为低延迟应用程序进行一些性能调整和容量规划,并且有以下问题:
在伦敦的主机和纽约的主机之间通过光纤连接发送的数据包的理论最短往返时间是多少?
python - 如何减少通过 REST api 发送的数据的延迟
我有一个应用程序从我们的其他服务器之一获取 JSON 格式的数据。我面临的问题是,在请求此信息时存在显着延迟。由于传递了大量数据(每个请求大约 1000 条记录,其中每条记录都非常庞大),因此有一种压缩方式有助于降低速度。如果是这样,您会推荐哪种压缩方案。
我在另一个线程上读到,他们的数据模式对他们需要使用的压缩类型也很重要。数据的模式是一致的,类似于以下
有人可以推荐一个解决方案来减少这种延迟。他们的延迟大约是 6-8 秒。我正在使用 Ruby on Rails 开发此应用程序,并且提供数据的服务器大部分使用 Python。