Articles of 性能

最佳文件缓冲区读取大小?

我正在写一个需要阅读相当大的文件的应用程序。 我一直想知道现代Windows XP计算机上读取缓冲区的最佳大小。 我search了一下,发现了很多例子,其中最佳尺寸为1024。 这里是我的意思的片段: long pointer = 0; buffer = new byte[1024]; // What's a good size here ? while (pointer < input.Length) { pointer += input.Read(buffer, 0, buffer.Length); } 我的应用程序相当简单,所以我不想写任何基准代码,但想知道什么尺寸是常见的?

在Windows上不一致的Python性能

我有一些我正在使用的Python 2.7代码,它在任何* nixtypes的系统上都很好用。 但是,在Windows上,代码的相同部分将具有非常不同的执行时间。 请注意我的debugging输出如下。 t是每次通过的总时间,s是生成数据的时间,u是通过串行发送数据到我的设备的时间(全部以毫秒为单位)。 t: 9 – s: 3 – u: 6 t: 14 – s: 9 – u: 5 t: 9 – s: 3 – u: 6 t: 9 – s: 3 – u: 6 t: 15 – s: 8 – u: 7 t: 14 – s: 9 – u: 5 t: […]

基准cp + git on linux vs Windows:为什么这样的区别?

我使用这个Python脚本创build了大量的文件,我主要用它来testingGit。 结果是非常惊人的,尤其是Windows和Linux之间的差异。 基本上我的脚本创build了12个目录,每个目录都有512个文件。 每个文件大约2到4 kB。 使用Git对象的版本库大约有12k个文件。 我做了基准testing: 时间把所有的文件git add .到git git add . 结帐前一个分支的时间 有时间在相同的SSD上复制存储库 时间将存储库复制到外部SATA硬盘(NTFS) 我在Windows 10和Linux上使用同一个存储库来完成这个任务: Operation Linux Windows Ratio ——— —– ——- —– 1. git add . 0.47s 21.7s x46 2. git checkout HEAD~1 0.35s 16.2s x46 3. git checkout . 0.40s 20.5s x50 4. cp -r ssd->ssd 0.35s 1m14s x211 5. […]

PHP因素30从Linux到Windows的性能差异

我们的团队正在开发WordPress插件,并在几台独立的服务器上提供托pipe实例。 我们的WordPress安装是由Gitpipe理的,所有的服务器都有相同的源代码和WordPress安装程序,只有数据库中的域名和实际数据有所不同。 对于每个安装,MySql运行在同一个主机上。 WordPress在每台服务器上都是独占运行的。 但是,在Windows Server 2008 RC2上部署此设置之后,我们注意到与其他服务器相比,性能显着不同:页面生成时间从平均值上升。 用PHP生成的页面为400ms到4000-5000ms。 对于仅由Apache提供的静态资源,速度与linux上大致相同。 所以我们采取了一些措施来缩小这个问题的范围: 确保没有antivir软件运行或其他Windows域的东西干扰 收集configuration文件数据以在脚本执行期间识别计时器 testing不同的服务器和硬件设置 仔细检查Apache和PHPconfiguration是否有明显的configuration错误 经过一些分析后,我们很快注意到正则expression式的评估在我们的Windows机器上是非常慢的。 评估10.000正则expression式( preg_match )在Linux上需要大约90ms,在Windows上需要大约3000ms。 以下提供了分析,系统testing和configuration细节。 我们不想优化这个脚本(我们知道该怎么做)。 我们希望让脚本在Linux上运行的速度与在Linux上的运行速度大致相同 (对于opcache / …给出相同的设置)。 也不需要优化脚本的内存占用。 更新:一段时间后,系统似乎耗尽内存,触发内存exception和随机分配。 请参阅下面的更多细节。 重新启动Apache / PHP现在解决了这个问题。 跟踪_get_browser是: File (called from) require wp-blog-header.php (index.php:17) wp (wp-blog-header.php:14) WP->main (functions.php:808) php::do_action_ref_array (class-wp.php:616) php::call_user_func_array (wp-includes/plugin:507) wp_slimstat::slimtrack (php::internal (507)) wp_slimstat::_get_browser (wp-slimstat.php:385) 更新2 :由于某些原因,我不记得我们回到激活PHP作为我们的服务器上的Apache模块(相同的性能不佳)。 但今天他们跑得非常快(〜1秒/请求)。 添加Opcache带来这个下降到~400ms […]

WPF – 在SYSTEM帐户下执行进程时性能较低

问题描述 我有一个WPF应用程序,通常在具有pipe理员权限的本地用户帐户下运行。 但是,在某些情况下,该进程是由在SYSTEM帐户下运行的服务或脚本启动的,因此该进程也在SYSTEM帐户下运行。 问题是当进程在SYSTEM帐户下运行时,有一些明显的滞后(UI不是很响应)。 我使用perfmon进行了一些挖掘,没有发现任何可疑的东西(CPU没有超载,没有抛出exception的exception,没有内存泄漏等)。 我也检查了事件日志,并没有发现任何有用的(没有警告/错误,只有与系统无关的信息)。 我首先以为这是由于模拟的上下文中执行的过程,但即使没有模拟(我使用PsExec.exe -i -s在SYSTEM帐户下启动它),滞后仍然存在。 任何想法,这将是从哪里来的? 不要犹豫,问你是否需要更多的信息,我主要是寻找一些有助于find根本原因的想法(显而易见的解决方法是不启动SYSTEM帐户下的过程,但它不是一个修复)。 此外,请注意,应用程序在Windows Embedded Standard(XP SP3)的自定义版本下运行,并且在具有电容式触摸屏的设备上运行。 我的问题 我的问题不是“我怎么解决这个问题?” 但是“为什么在SYSTEM帐户下应用程序运行性能低下? 更新1 我试图改变Windows的性能优化设置为@Sanderbuild议,没有任何改变( http://support.microsoft.com/kb/308417 )。 更新2 我也做了一个testing使用这个应用程序: http : //www.kynosarges.org/WpfPerformance.html#Application 当在每个帐户下运行应用程序时,第一次GDI +testing(基本上绘制了一堆三angular形),我在SYSTEM帐户下的运行时间总是大约两倍,这导致我认为这不是严格的WPF限制。 再次,除了执行进程的帐户之外,我没有任何改变。

慢图片框

我正在为我在学校的项目编写一个简单的Ludus Latrunculorum游戏,并使用图片框来表示游戏的各个部分。 但是,当我使用背景图像 – 任何背景图像的面板,我把它放在,它吸引他们很慢。 就好像在左上方放置1张图片,然后等待0.005左右放置下一张,直到板子被填满。 我已经尝试用1×1白色图像replace背景图像,结果相同。 但是,当我使背景颜色( this.board.BackColor = Color.Green; )它立即打印件。 而且,当我把背景颜色透明的时候,我会看到整个背景的原始背景,印刷速度又很慢。 但是当我使用Color.Tan(这是我的透明度键)时,我会看到窗体背后的任何东西,并立即打印这些部分。 我觉得这很奇怪,因为我猜测CPU对于获取背景图像和打印背景图像是比较困难的。 为什么会这样呢? 我怎样才能立即打印图片? 期望的行为 – 即时打印的作品。 实际行为 – 慢速打印件。 简短的代码来获取相同的问题: Form1.Designer.cs using System.Drawing; namespace WindowsFormsApplication6 { partial class Form1 { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being […]

MongoDB与CouchDB(速度优化)

我做了一些速度testing来比较MongoDB和CouchDB。 只有插入是在testing。 我得到的MongoDB比CouchDB快15倍。 我知道这是因为socketsVS http。 但是,这对我来说非常有趣,我如何优化CouchDB中的插入? testing平台:Windows XP SP3 32位。 我使用了最新版本的MongoDB,MongoDB C#Driver和CouchDB for Windows 安装包的最新版本。 谢谢!

如何获得当前进程的Windows性能计数器

我正在编写一个C ++应用程序foo.exe的代码。 在应用程序内部,我想logging它的地址空间使用情况。 所以我想看的性能计数器是“\ Process(foo)\ Virtual Bytes”。 我遇到的问题是可能有多个在系统上运行的foo.exe实例。 在perfmon中,我可以看到这些引用为“\ Process(foo#2)\ Virtual Bytes”,其中#2可以是任何数字,具体取决于进程的数量。 我怎样才能构造一个计数器path来获取当前进程的虚拟字节,以处理有多个进程实例的情况?

与Windows上的本地主机IPC上的命名pipe道相比,TCP套接字有多慢?

我正在开发一个TCP代理服务器,放在一个TCP服务器的前面,该服务器应该处理来自野生互联网的500到1000个活动连接。 代理与服务在同一台机器上运行,并且大部分是透明的。 该服务大部分不知道该代理,唯一的例外是通知客户端的真实远程IP地址。 这意味着,对于每个入站打开的TCP套接字,服务器上还有两个套接字:代理中的第二个套接字,以及代理服务器后面的实际服务中的第二个套接字。 两个代理套接字上的发送和接收窗口大小设置为1024个字节。 这对性能有什么影响? 这种configuration有多慢? 我应该把一些努力改变服务使用命名pipe道(或其他IPC机制),或本地TCP套接字大部分是一个有效的IPC? 两个应用程序的合并不是一个选项。 现在我们被困在两个过程configuration中。 编辑 :在同一个硬件上有两个单独的过程的原因是100%的经济。 我们只有一台服务器,而我们不打算多收(没钱)。 TCP服务是Visual Basic 6中的一个传统软件,超出了我们的预期。 代理是C ++。 我们没有时间,金钱和人力来重写和迁移VB6代码到一个现代的编程环境。 代理服务器是我们试图减轻服务的特定性能问题,这是我们不时得到的DDoS攻击 。 代理是开源的, 这里是项目源代码 。

在Windows系统上移动文件的最快方法

我想在Windows系统上将大约800GB的数据从NTFS存储设备移动到FAT32设备 (都是外部硬盘驱动器)。 达到这个目标的最好方法是什么? 简单地使用剪切粘贴? 使用命令提示符? ( move ) 写一个batch file来复制一个给定的时间间隔的一小块数据? 使用一些特定的应用程序,为我做的工作? 或者有什么更好的想法…? 什么是最安全,最有效和最快速的方式来实现这样一个耗时的过程?