标签: latency

ApacheBench的替代方案,用于分析我的代码速度

我已经做了一些使用Apache Bench来分析我的代码响应时间的实验,但它并没有为我生成正确的数据类型.我希望这里的好人有想法.

具体来说,我需要一个工具

  • 是否通过网络请求HTTP(它不需要做任何非常花哨的事情)
  • 尽可能准确地记录响应时间(至少几毫秒)
  • 将响应时间数据写入文件而不进行进一步处理(或将其提供给我的代码,如果是库)

我知道ab -e,它将数据打印到文件.问题是这只打印了分位数据,这很有用,但不是我需要的.该ab -g选项可以工作,除了它不打印亚秒数据,这意味着我没有我需要的分辨率.

我写了几行Python来做,但是httplib非常低效,结果没用.一般来说,我需要比纯Python更精确的精度.如果有人对Python可以使用的库有建议,我会全力以赴.

我需要一些高性能,可重复且可靠的东西.

我知道,我的一半回答将是"互联网延迟使得那种详细的测量毫无意义".在我的特定用例中,这不是真的.我需要高分辨率时序细节.实际使用我的HPET硬件的东西会很棒.

由于答案和观点数量较少,因此在这里投入了赏金.

python benchmarking profiling latency apachebench

7
推荐指数
1
解决办法
5923
查看次数

如何在没有网络延迟的情况下计算HTTP请求处理时间?

由于服务器和客户端之间的地理距离,网络延迟可能会有很大差异.所以我想获得"纯粹"的要求.处理没有网络延迟的服务时间.

我希望将网络延迟作为TCP连接时间.据我所知,这个时间在很大程度上取决于网络.

主要想法是计算:

  • TCP连接时间,
  • TCP第一个数据包接收时间,
  • 获得"纯"服务时间= TCP第一个数据包接收(等待时间) - TCP连接.

我将TCP连接除以2,因为事实上有2个请求 - 响应(3次握手).

我有两个问题:

  1. 我应该计算TCP所有数据包接收时间而不是只有第一个数据包?
  2. 一般来说这种方法还可以吗?

PS:作为一个工具,我使用Erlang的gen_tcp.我可以显示代码.

tcp latency http

7
推荐指数
1
解决办法
833
查看次数

从方法返回的开销

我有一个处理一些查询的方法A().这个方法,从开括号到返回语句之前,时间为+/- 70ms.其中50%来自打开连接,大约20%来自实际查询,5-10%用于某些内存访问,其余(可能)用于处理连接,命令和阅读器.

虽然用于处理连接的这一大块时间足够烦人,但更让我困扰的是当我从方法B()调用A()时:

B()
{
    var timer = Stopwatch.Startnew()
    A(); 
    timer.Stop(); // elapsed: +/- 250ms
    Debugger.Break();
}
Run Code Online (Sandbox Code Playgroud)

又增加了180毫秒的延迟,我似乎无法弄清楚原因.我已经尝试过A返回null,它什么都没改变.

唯一的磁盘I/O和网络发生在A中.我认为从磁盘和网络到本地内存的传输应该发生在A中,因此从B调用A不应该受此影响,但显然这不是案子?这是我遇到的网络延迟吗?如果是这样,那么为什么当我让B返回null时也会发生这种情况呢?

我目前没有其他解释......

  • 一切都在同一个集会中,
  • 没有附带调试器的测量没有任何改变,
  • 返回'null'立即显示0 ms,返回null而不是正常返回值什么都不改变(但强制执行这个想法,这与延迟有某种关系).

A大致如下实现,就像访问数据库的任何简单方法一样.这是设计,但显示了基本的想法和流程:

A()
{   
    var totalTimer = Stopwatch.StartNew();
    var stuff = new Stuffholder();

    using(connection)
    {
         using(command)
         {
              using(reader) 
              { 
                  // fill 'stuff' 
              }
         } 
    }

    totalTimer.Stop(); // elapsed: +/- 70ms
    return stuff;
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c# sql-server networking latency

7
推荐指数
1
解决办法
162
查看次数

为什么整数的java除法比黑客的喜悦实现更快

我正在测试来自黑客高兴书籍的divs10函数吞吐量,在我的jdk 1.7 64位版本21和i7 intel盒式处理器上用java编码:7 vendor_id:GenuineIntel cpu系列:6型号:26型号名称:Intel(R)Core(TM)i7 CPU 920 @ 2.67GHz

我想知道为什么默认的java运算符/比黑客的喜悦书中的divs10函数更快,结果显示divs10比"/"运算符慢3倍,令我惊讶.

任何人都可以告诉我,是否有任何花哨的内在jvm可以使用?

源代码如下.

 public class div10 {

            public static final int divs10(int n) {
                   int q, r;

                   n = n + (n >> 31 & 9);
                   q = (n >> 1) + (n >> 2);
                   q += q >> 4;
                   q += q >> 8;
                   q += q >> 16;
                   q = q >> 3;
                   r = n - ((q << 3) + (q << 1));
                   return q + ((r …
Run Code Online (Sandbox Code Playgroud)

java math latency intrinsics

7
推荐指数
1
解决办法
823
查看次数

高效的C++ 11设计为事件监听器定期唤醒?

问题

我有一个系统(使用C++ 11)与不规则事件的生产者:( P例如,它可能是UI事件,或者它可能通过TCP/IP套接字接收金融交易数据等).每个事件都附带一个小数据包.

然后,我有一个数字"工蜂"的:B1,B2,B3,...每一种确实的事件的自己加工P饲料他们.他们的处理可能很快,但可能需要很长时间,这就是为什么计划是在自己的线程中运行每个工蜂.此外,每个工蜂需要每N秒运行一次不同的功能(例如N = 60,但它也可能因工蜂而异).此常规处理应始终与事件处理串行完成,永远不要在不同的线程上完成.

最后,一些工蜂也可能会从其他生产活动(P2,P3等),但如果复杂的事情,我总是可以有P1,P2等喂到中央P,他们的工作是将所有事件发送到工蜂.

问题

这种系统的最佳设计是什么?低延迟和高效率是最佳的主要标准.可靠性也很重要:每个B事件都必须接收每个事件(即使它们是批量生成的,因为它当时很忙),如果一个B事件崩溃,它不应该影响其他事件.

如果重要:假设1-64个工蜂,4-8个硬件线程,事件之间的平均时间为10秒,事件之间的最短时间为0.2秒,典型的常规功能是每秒N=60.但如果理想的设计对任何这些标准都敏感,我想了解如何.

注意:如果工蜂可以保证永远不会抛出异常,那是否会改变最佳设计的选择?(感觉这将是无关的,但我想我会把它提起来.)

注意:蜜蜂可能比硬件线程更多; 假设这是另一个问题.(例如,延迟可能对某些工蜂很重要,并且可能会给他们自己的线程,而其他人可能会被告知共享一个线程.)

想法一:等到事件或超时

每个P都有互斥和条件.当它获得新数据时,它会发出信号.

每个工蜂使用theCondition.wait_until(lock,timeout)这里timeout是下一个需要醒来做定期处理的时间.它检查返回值以查看它是否已发出信号或超时.

这里的缺点似乎是它只是一个信号,没有数据.所以我需要每个B人获得另一个锁,以便对数据队列进行读访问.通常他们都希望同时做到这一点,所以这变得很难看.

我也不清楚如果B需要花费很长时间处理某些事情并在它wait_until再次调用之前错过了几个事件会发生什么.

想法二:每个工人的数据队列

这里每个B都有一个带锁的队列.P获取写锁定,并添加数据项.B获得一个读锁定,以便在准备好时关闭每个项目.B因为有新数据,我仍然需要一些知道醒来的方法.

这里的缺点似乎是P线程需要循环遍历每个B以给它们数据.这会引入延迟,并且也会感到脆弱(例如,如果其中一个工蜂表现不佳).

想法三:期货

这个问题感觉非常适合未来. P创建一个std::promise,然后每个B …

events multithreading latency future c++11

7
推荐指数
1
解决办法
1687
查看次数

同步游戏(MMORPG)客户端和服务器之间的时间/事件?

我目前正在使用Java服务器端和as3客户端.我想知道是否有一个银弹来同步他们之间的时钟.在可变延迟和可变时钟速度之间,似乎每个数据包都需要一个时间戳.

谢谢!

java tcp latency client-server actionscript-3

6
推荐指数
1
解决办法
2430
查看次数

用于服务器应用程序的C++与Java

我需要制作低延迟服务器,其中原始数据吞吐量不如处理数千个同时连接的能力重要.我不知道使用什么语言.Java更简单,开发将更快,更好的接口,我需要的所有+良好的网络支持(JAVA NIO和选择器类).但实际上我对java在编程方面没有多少经验,所以即使我读过java这样的东西今天不比原生C/C++慢,但仍然对性能有些怀疑,因为c/c ++被编译成二进制代码,但是java .class文件被解释,因此在翻译中必须有开销.

  • 有人可以发表自己的经历吗?
  • 是否有人编写低延迟应用程序?
  • 你的意思是更好地用于那种类型的应用程序?

编辑:应用程序将是服务器实时支持Web应用程序(如聊天等)

c c++ java latency

6
推荐指数
1
解决办法
8529
查看次数

MIDI Over Bluetooth

我正在开始一个通过蓝牙进行无线MIDI连接的项目.据我所知,BT规范中没有定义MIDI配置文件.

我想知道你们中的一些人是否有兴趣分享关于使用MIDI而不是BT的最佳方式的经验,特别是关于延迟问题.

我的项目基于BT低能耗(BTLE),我现在正在尝试找到最好的BT配置文件,可能是串口RFCOMM现有配置文件,还是新的自定义配置文件?

任何提示将不胜感激.最好的杰罗姆

midi latency bluetooth rfcomm bluetooth-lowenergy

6
推荐指数
1
解决办法
5511
查看次数

互联网延迟:在Chrome开发者工具网络标签中,PENDING和FROM CACHE的含义是什么

我想确认一下我是否正确理解这一点.当我在Chrome地址栏中输入"google.com"时遇到严重的延迟问题,但在我在其他浏览器中执行相同操作时却没有.我还下载了Canary,并在那里遇到同样的问题.我认为其他浏览器可能会重写URL客户端,避免前两个301和302错误.似是而非?

"待定"是否意味着该请求尚未得到满足?并且"(来自缓存)"是否意味着浏览器正在我的PC上查找该文件?

为"google.com"请求返回301错误需要21秒,然后返回302秒并将最终重定向返回到完整网址.这是否意味着处理此类请求的服务器真的负担过重?

为什么这些图片需要很长时间才能获取?59秒,还在等待?

Chrome开发者工具网络标签截屏

google-chrome latency http-status-code-301 http-status-code-302

6
推荐指数
1
解决办法
1140
查看次数

在C/C++中对齐特定地址边界的内存是否仍能提高x86的性能?

许多低延迟开发指南讨论了在特定地址边界上对齐内存分配:

https://github.com/real-logic/simple-binary-encoding/wiki/Design-Principles#word-aligned-access

http://www.alexonlinux.com/aligned-vs-unaligned-memory-access

但是,第二个链接是从2008年开始的.在2019年,在地址边界上调整内存是否仍能提高英特尔CPU的性能?我认为英特尔CPU不再会因访问未对齐地址而导致延迟损失?如果没有,在什么情况下应该这样做?我应该对齐每个堆栈变量吗?类成员变量?

有没有人有任何例子表明他们在调整内存方面取得了显着的性能提升?

c c++ performance x86 latency

6
推荐指数
1
解决办法
415
查看次数