草庐IT

Performance

全部标签

c++ - WAN 上 Windows 命名管道的低吞吐量

我在使用Windows命名管道时遇到性能低下的问题。随着网络延迟的增加,吞吐量迅速下降。每秒发送的消息与往返时间之间大致呈线性关系。似乎客户端必须在服务器发送下一条消息之前确认每条消息。这会导致性能非常差,我每秒只能通过RTT为200毫秒的链接发送5条(~100字节)消息。管道是异步的,使用多个重叠的写入操作(以及客户端的多个重叠读取),但这并没有提高吞吐量。是否可以通过命名管道并行发送消息?管道是使用PIPE_TYPE_MESSAGE创建的,PIPE_READMODE_BYTE会更好吗?有没有其他方法可以提高性能?这是一个已部署的解决方案,所以我不能简单地用套接字连接替换管道(我读过

windows - 如何在 Windows 中监控端口的流量?

我正在尝试找到一种解决方案来监控通过特定端口的流量(进出)。不需要捕获数据包或执行任何其他操作。它所做的是作为一个流量监听器,以确保每10分钟有消息发送到该端口或从该端口接收。它必须一直在后台运行(就像守护进程一样),并且不会对性能产生重大影响。根据我的研究,一种选择是使用现有工具来做到这一点。有很多工具可以监控或嗅探流量,例如wireshark。好吧,似乎它们中的大多数都监视通过接口(interface)而不是端口的流量,或者它们不能作为守护进程运行。编写程序来执行此操作的另一种选择。SharpPcap似乎是个不错的选择,但我仍然需要抓包分析,才能知道是否存在这样的流量。有人可以建议

windows - 如何设置在启动 perfmon 时运行的默认计数器?

当您启动perfmon*时,它会加载运行3个计数器:内存“页数/秒”、物理磁盘“磁盘队列长度”和处理器“%处理器时间”。如何将其更改为我关心的计数器?*要启动perfmon,请在命令提示符下键入“perfmon”或在“管理工具”下选择“性能” 最佳答案 运行“perfmon/sys”,添加您喜欢的计数器,转到“文件/将设置另存为”以保存.PerfmonCfg文件。现在您可以直接从资源管理器启动文件或使用“文件/加载设置”从perfmon加载它。操作系统版本说明:假设是Windows7。此功能不适用于WindowsXP。

windows - 套接字服务器的高效重叠 I/O

这两种不同模型中的哪一种会更有效(考虑抖动、处理器缓存的利用、整体设计等等)?1IOCP和启动X个线程(其中X是计算机拥有的处理器数量)。这意味着我的“服务器”将只有1个IOCP(队列)用于所有请求和X线程来服务/处理它们。我读过很多讨论这种设计效率的文章。使用此模型,我将拥有1个也将关联到IOCP的监听器。让我们假设我可以弄清楚如何使数据包/请求保持同步。XIOCP(其中X是计算机拥有的处理器数量),每个IOCP有1个线程。这意味着每个处理器都有自己的队列和1个线程来服务/处理它们。使用此模型,我将有一个单独的监听器(不使用IOCP)来处理传入连接并将SOCKET分配给正确的IOCP

mysql - 任何适用于 Windows 的 MySQLTuner 等效/替代品?

我知道自动调整有其局限性,但如果能快速确定我的WindowsMySQLInnoDB配置的合理起点(innodb_additional_mem_pool_size、innodb_buffer_pool_size、innodb_log_file_size、innodb_log_buffer_size),给定我的RAM会很棒想要分配给MySQL(总共4GB安装中的512Mo)。我找到了thisprevioussimilarquestion但它没有答案。非常感谢您的帮助! 最佳答案 我遇到了和你一样的问题,所以已经将MySQLTuner移植

c++ - 如何找出我的代码的哪一部分正在减慢我的 C++ 程序

我写了2个版本的程序,这是一个用C++编写的进化算法。第一个版本是程序化的,运行良好且速度非常快。第二个版本是完全面向对象的,程序找到了结果,但是非常非常慢(比第一个版本慢10倍)。有没有办法可以测量循环内代码段的时间或类似的东西?任何建议或想法都会有所帮助。提前致谢。 最佳答案 使用分析器。哪一个最好取决于平台/操作环境;例如对于g++,你可以使用gprof,或者如果你不想重新编译,你可以使用oprofile,假设是Linux。在Solaris上,您可以使用dtrace。在其他平台上,例如Windows或Mac,将您的平台的标签添

windows - 具有可变时钟速度的多核系统中的 QueryPerformance 计数器

根据MSDN文章GameTimingandMulticoreProcessors,QueryPerformanceFrequency()和QueryPerformanceCounter()函数据说是最好的。但如果不支持它,我可以使用timeGetTime()或仅使用GetTickCount()。QueryPerformanceFrequency()是否与CPU时钟相同,或者它是否使用自己的时钟或具有自己的频率且不随时间变化的时钟?如果频率随时间随机变化怎么办(尤其是在笔记本电脑中)如何使用SetThreadAffinityMask函数?(我看到的一些代码使用该函数将其更改为“1”,然后

c++ - MFC 64 位代码在 Windows Server 2008 R2 上比 32 位代码慢

我运行以下MFC代码:CArrayl_Arr;for(inti=0;i如果我构建64位版本,代码运行速度比32位版本慢2倍。我尝试了Debug和Release版本。时间如下:Debug64bit:15085msDebug32bit:8128msRelease64bit:8237msRelease32bit:4695ms我的配置:MicrosoftVisualStudio2005Version8.0.50727.4039(QFE.050727-4000)WindowsServer2008R2Standard64bitProcessor:Intel(R)Xeon(R)E5645@2.40G

java - Java 中的多线程 : Do different Operating Systems offer different performance?

这可能是一个非常愚蠢的问题,但我并没有真正在网上找到答案(至少我不能理解),我只找到了一些基准测试结果likethese使用特定的基准测试软件。让我给出一些背景信息:我目前正在Ubuntu机器上开发一个java多线程程序,我在办公室有一台Windows10机器用于测试目的,该程序应该在连接的Windows7机器上运行到生产线。我对这种情况下的Ubuntu性能不感兴趣,因为客户想在Windows机器上使用它。当我在Windows10机器上测试该软件时,它只是“感觉”它比在Windows7PC上运行得更快,我必须说我没有对Windows7机器的完全访问权限,所以我不能接受测试它的时间,而且

windows - 通过 Cygwin 运行 Windows .EXE 本质上比通过 BAT 运行更慢吗?

我们正在通过Cygwin脚本运行Windows.EXE文件,但遇到了性能问题。我看过各种关于Cygwin性能问题的帖子,包括thisone,其中之一answers深入研究Cygwin内部结构,让我认为可能存在问题。然而,这些帖子似乎更多地是关于启动时间、选项卡完成等。在我们开始进行基准测试之前,我想问一下:如果从Cygwinvs.BAT? 最佳答案 不是实际的程序,不是。运行程序之前的内务处理和其他事情可能会有所不同。Cmd可能会直接调用CreateProcess。Cygwin的bash可能首先进行参数解析、通配符扩展、通过Cygw