找到瓶颈

找到瓶颈

我正在运行一个打开 TIF 文件的进程。每个 TIF 文件只是一个常规页面,每个页面可能只有 100 kB。每次打开 TIF 文件时,它都会尝试读取页面上特定区域的条形码。读取指定区域中的条形码后,它会关闭文件并打开下一个文件。由于某种原因,此过程每个文件大约需要 3 秒。这对我们来说太长了。我们可以做些什么来加快速度?运行此文件的服务器是四核 2.1 GHz 处理器,具有足够的 RAM。我检查了 CPU 和内存,似乎一切都没有得到充分利用。我如何找到瓶颈在哪里?我如何加快这个过程?

在 Windows Server 2008 上运行

答案1

如果文件托管在 SAN 或 NAS 上,则您可能会遇到网络延迟的可能性。

你的程序有日志文件吗?你能打开日志记录吗?

问题似乎出在 I/O(如果托管方式是网络,则可能是网络)或软件本身。我会首先检查这两个部分。

答案2

在 Windows Server 2008 中,资源的高级视图是资源监视器。即使是 4 年前的低端服务器打开文件的速度也比您描述的速度快,所以我希望它也包含在代码中。

对于系统管理员(非开发人员)来说,查看正在发生的事情的常用“深层”工具是使用 Microsoft Sysinternals 工具进程探索器进程监控。进程资源管理器将允许您右键单击正在运行的程序并深入了解该进程的性能,并查看线程、字符串等。进程监视器将让您查看进程正在执行的所有对文件系统和注册表的读取/写入。

答案3

根据具体情况,我会先对应用程序进行性能分析或基准测试。如果可能的话,性能分析应该能够很好地指示应用程序在 3 秒内执行的操作。或者,您可以在各种条件下对应用程序的速度进行基准测试(常规 TIF、全黑 TIF、白色 TIF、仅加载 TIF 但不解析它等)。这也应该可以以迂回的方式指示瓶颈。

找到了您的描述,但是我猜想这样的操作会受到应用程序和 CPU 的限制。设计良好的应用程序不应该在低端 CPU 上花 3 秒钟来解析固定位置的条形码。

相关内容