Articles of 性能

File.Copy与手动FileStream.Write复制文件

我的问题是关于文件复制性能。 我们有一个媒体pipe理系统,需要在文件系统上的大量移动文件到不同的位置,包括在同一networking上的Windows共享,FTP站点,AmazonS3等。当我们都在一个Windowsnetworking上,我们可以逃脱使用System.IO.File.Copy(源,目标)复制文件。 由于很多时候我们只有一个inputstream(就像一个MemoryStream),所以我们尝试抽象复制操作来获取一个inputstream和一个输出stream,但是我们看到一个巨大的性能下降。 下面是一些复制文件的代码作为讨论点。 public void Copy(System.IO.Stream inStream, string outputFilePath) { int bufferSize = 1024 * 64; using (FileStream fileStream = new FileStream(outputFilePath, FileMode.OpenOrCreate, FileAccess.Write)) { int bytesRead = -1; byte[] bytes = new byte[bufferSize]; while ((bytesRead = inStream.Read(bytes, 0, bufferSize)) > 0) { fileStream.Write(bytes, 0, bytesRead); fileStream.Flush(); } } } 有谁知道为什么这个performance比File.Copy慢得多? 有什么我可以做的改善performance? 我只需要把特殊的逻辑,看看我是否从一个窗口位置复制到另一个 – […]

Windows C ++纳秒时序?

有没有在Windows上的C + +的方式来测量纳秒时间? 我只能findLinux解决scheme。

为什么窗口第一次打开文件的速度太慢了,还有更快的方法

这是Windows 7,64位,专业使用 考虑一个非常简单的循环 for (i = 0; i < names->size(); i++) { std::string Name = names->at(i); HANDLE fileHandle = CreateFile(Name.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if (fileHandle == INVALID_HANDLE_VALUE) { throw "Failed"; } CloseHandle(fileHandle); } 如果我在一个有863个文件的目录上运行它,它会稍微超过22秒,或25毫秒/文件。 下一次169毫秒或0.19毫秒/文件。 如果我只是使用find_file的时间,新鲜的目录是非常快的,约0.2毫秒/文件。 虽然我在这里使用了CreateFile,但其他方法的结果相同。 当然,答案是文件caching:Windows必须caching关于文件打开的信息。 而且,它必须是磁盘访问,就像目录在SSD上一样,第一次和第二次打开大致相同。 现在这些硬盘上的查找时间只有9毫秒,所以有人知道WINDOWS在25毫秒的时间里只有在没有读数的情况下打开/closures一个文件才能读取。 但更重要的是,是否有可能加快速度。 你可能会说25 ms很快,但是我正在播放video文件,所以我需要在33 ms左右读取数据,实际读取的数据在30 ms范围内,所以打开成本太高。 任何build议如何快速打开* *文件的负载,将不胜感激。

Windows上的Python性能

在Windows上,Python通常比* nix机器慢一些? Python似乎在我的Mac OS X机器上大放异彩,而我的Window的Vista机器似乎运行速度较慢。 机器处理能力相似,Vista机器有1GB的内存。 我在Mercurial中特别注意到了这一点,但我想这可能只是Mercurial如何在Windows上打包。

我可以使用哪些工具来确定应用程序的硬件要求?

对于普通读者:传奇™继续… 我的应用在我的开发机器上运行良好 – 这是5年前购买的一款相当不错的游戏装备。 因此,这是64位,具有2.2GHz的时钟速度和2GB的内存。 但是,工作的机器是标准的戴尔问题办公室电脑,甚至很难启动我的应用程序,更不用说运行它了。 ( 解释…我可以想象,人们对我尖叫:“你究竟在做什么来要求这样的规范?”那么,我正在做大量的实时图像分析和audio生成。 我们的团队有预算购买专用笔记本电脑(需要便携式)来运行它。 所以现在我已经负责生成一个最低要求的规格。 我可以使用哪些工具来确定能够舒适地运行我的应用程序的最低规格? 更新:到目前为止,答案虽然有用,但更侧重于分析的替代scheme。 所以我已经提出了一个赏金,看是否有任何软件会做这种事情。

Windows和Linux中的Hashlib

我正在Python中编写一个p2p应用程序,并使用hashlib模块来识别networking中具有相同内容但名称不同的文件。 问题是我用Python 2.7testing了Windows(Vista)中的文件的散列码,速度非常快(不到一秒,几千兆字节)。 所以,在Linux(Fedora 12,Python 2.6.2和Python 2.7.1由我自己编译,因为我没有find与yum rpm)是慢得多,几乎一分钟的文件小于1GB。 问题是, 为什么? 我可以做些什么来提高Linux的性能? 散列的代码是 import hashlib … def crear_lista(directorio): lista = open(archivo, "w") for (root, dirs, files) in os.walk(directorio): for f in files: #archivo para hacerle el hash h = open(os.path.join(root, f), "r") #calcular el hash de los archivos md5 = hashlib.md5() while True: trozo = h.read(md5.block_size) […]

有效的线程数

我想优化我的应用程序线程数量。 几乎所有的CPU都有相同的IO值。 在系统中没有其他应用程序运行时,线程的有效数量是多less。 我想要Windows和JVM下的答案。

Windows Azure虚拟机在缩放时访问networking速度很慢

我正在我的小型Azure虚拟机上运行一些启动脚本(cmd / bat),其中包括从挂载的VHD进行文件传输操作,通常在3分钟内完成(复制文件并使用命令行提取〜500Mb zip文件7Z)。 当我扩展到150个实例时,同样的操作非常缓慢(总共15分钟,其中大部分被7z使用)。 另外,启动过程最慢的节点使用mstsc(animation比较滞后,需要花费大量的时间login)很难访问,但这可能没有关系。 可能是什么问题呢? 我们有想法来检查caching,但是在下面的情况下可能会出现其他任何潜在的瓶颈。 更新:我试图提取D:\驱动器,而不是提取它在C:\上,同时缩放到200,解压缩需要大约一分钟! 所以看起来问题在于C:\可能是一团糟。 但是同样的,我在40个文件中有3GB的数据,所以每个blob的60MB / s应该足以处理它。 或者 – 我们是否可以为所有斑点设置上限?

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

我正在写一个需要阅读相当大的文件的应用程序。 我一直想知道现代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: […]