MAIBILAI

c++ - 用于测量延迟的计时器

在通过TCP的任何协议(protocol)中测量网络延迟(接收确认时间-发送消息时间)时,您会推荐使用什么计时器?为什么?它有什么分辨率?其他优点/缺点是什么?可选:它是如何工作的?可选:您不会使用什么计时器,为什么?我主要寻找Windows/C++解决方案,但如果您想对其他系统发表评论,请随时发表评论。(目前我们使用GetTickCount(),但它不是一个非常准确的计时器。) 最佳答案 这是我的答案的拷贝:C++Timerfunctiontoprovidetimeinnanoseconds对于Linux(和BSD),您要使用cl

java - 低延迟网络技术和银弹

在对低延迟网络进行一些基本的谷歌搜索之后,我得出了以下列表,其中列出了程序员和系统设计人员在着手使用低延迟网络时应该考虑的事项:硬件、系统和协议(protocol)的设计必须一起考虑使用UDP而不是TCP开发协议(protocol),并在应用层实现简单的ack-nak、重发逻辑减少在线下使用和打包数据的进程或线程的上下文切换次数(最好为零)使用操作系统的最佳选择器(select、kqueue、epoll等)使用具有大量板载缓冲区(fifo)的优质NIC和交换机使用多个NIC,专门用于下游和上游数据流减少其他设备或软件生成的IRQ的数量(简而言之,如果不需要则删除它们)减少互斥锁和条件的

c++ - 使用 QAudioOutput (qt) 进行实时流式传输

我想播放实时声音以响应用户交互而没有明显的延迟。为了低延迟,我必须发送小块的pcm数据。我在做什么:QAudioFormatformat;format.setSampleRate(22050);format.setChannelCount(1);format.setSampleSize(16);format.setCodec("audio/pcm");format.setByteOrder(QAudioFormat::LittleEndian);format.setSampleType(QAudioFormat::SignedInt);QAudioDeviceInfoi

c++ - 如何对多个Server-Client对使用ZeroMQ?

我正在C++14中利用多线程实现性能很重的两方协议(protocol),并且当前正在将ZeroMQ用作网络层。该应用程序具有以下简单架构:一个主服务器角色一个主要客户角色服务器和客户端均生成固定数目的线程n所有n并行并发线程对都执行一些性能和通信,但相互之间是互斥的,但互斥的协议(protocol)交换,即它们以n固定对运行,并且不应与成对的固定对手混合/交换任何数据。我当前的设计在Context()和server上都使用单个ZeroMQclient-实例,该实例在所有n-local线程之间共享,并且每个client/server线程对都创建一个ZMQ_PAIR套接字(我只是增加端口号

c++ - Mac OS X 上的高性能代码

我想知道在OSX上分析应用程序代码的最佳方法。我有一个纳秒分辨率计时器,经过一些基线测试后,我似乎遇到了大约45微(macbook2ghz)的内核系统调用上下文切换core2双核模型)。我注意到,如果我不时地让我的应用程序循环,我可以获得大约25,000-50,000微次的调度上下文切换。我正在测试一些算法,我想限制它的影响。我真正想要的是能够设置任务的处理器亲和性,并将主线程优先级设置为实时,这不是一件坏事,因为有一天这台Macbook可能会用作低延迟Controller为了某件事。关于如何在雪豹/XCode上执行此操作的任何想法? 最佳答案

java - 为什么 JVM 在繁忙的自旋暂停后显示相同代码块的更多延迟?

下面的代码演示了问题明确,即:Theexactsameblockofcodebecomesslowerafterabusyspinpause.请注意,我当然没有使用Thread.sleep.另请注意,没有条件导致HotSpot/JIT去优化,因为我正在使用数学运算而不是IF更改暂停。.有一个我想要计时的数学运算block。首先,我在开始测量之前对block暂停1纳秒进行计时。我这样做了20,000次。然后我将暂停从1纳秒更改为5秒,并像往常一样继续测量延迟。我这样做了15次。然后我打印最后30个测量值,因此您可以看到15个测量值的暂停时间为1纳秒,以及15个测量值的暂停时间为5秒。正如

Java 垃圾收集,基于类的 Tenuring

我一直在研究Java垃圾收集器的参数,随着eden/survivor空间填满,我看到昂贵且频繁的次要垃圾收集。这是因为我分配了一个非常大的对象池。我知道这些对象是“永久的”,因为它们会被重用但永远不会被GC处理。因此,我试图找到一种方法来“自动”将这些类型的对象放置在老年代而不是新年代。我目前正在通过分配一个非常大的新一代来解决这个问题(以避免非常频繁的次要GC),不幸的是,这意味着每个单独的集合都更昂贵。我希望能够为每个类指定一个任期率,并将它设置为非常低的特定类对象,我知道这些对象永远不会被GC处理(而且非常大)(在他的例子中,是关于我的应用程序对延迟高度敏感。我当前的设置是使用最

java - 分配延迟似乎很高,为什么?

我有一个在低延迟环境中运行的(java)应用程序,它通常在~600微秒(+/-100)内处理指令。当然,随着我们进一步进入微秒级空间,您看到的延迟成本发生了变化,现在我们注意到2/3的时间花在了2个核心域对象的分配上。基准测试已经将有问题的代码部分从字面上从现有引用中分离出对象的构造,即基本上是大量引用(每个类中约15个)和几个新的列表,尽管请参阅下面的注释这里测量的是什么。每个人始终需要大约100微秒,这对我来说是莫名其妙的,我正在努力找出原因。一个快速基准测试表明,一个类似大小的充满字符串的对象需要大约2-3微秒才能更新,显然这种基准测试充满了困难,但认为它可能作为基准有用。这里有

java - Tomcat 零星延迟

我一直在微优化我们在Tomcat上的页面响应时间,在几乎所有情况下,如果我一遍又一遍地刷新,我会看到响应时间为50毫秒,但如果页面没有被点击一两秒,响应时间会跳回500毫秒。无论本地、非本地、APR、NIO、JIO、静态或动态响应(即提供静态文件或动态处理响应),我都看到过相同的行为。到目前为止,我还没有看到这种行为不会发生在Tomcat上(无论频率如何,始终低于400毫秒)。我也用过VisualVM来查看是否有任何线索。我认为这是某种保持Activity状态,但当我运行ApacheBench时,我获得了更快的响应时间(不到50毫秒)(显然是因为它经常命中它)。那么如何在Tomcat中

javascript - 如何通过浏览器确定远程服务器的延迟

我运行了几个游戏隧道服务器,并希望有一个页面,客户端可以在其中对所有服务器运行ping并找出响应最快的页面。据我所知,在JavaScript中似乎没有合适的方法来执行此操作,但我在想,是否有人知道在Flash或其他客户端浏览器技术中执行此操作的方法? 最佳答案 大多数小程序技术,包括Javascript,都执行同源策略。动态添加DOM元素(例如图像)并使用onload事件处理程序收集计时信息是可能的。伪代码for(serverinservers){varimg=document.createElement('IMG'