OCR应用中C#并行任务的使用?
我正在构建一个Windows服务应用程序,它将包含扫描图像的目录作为输入。我的应用程序将遍历所有图像,并对每个图像执行一些OCR操作,以获取条形码、发票号和客户号 一些背景信息:OCR应用中C#并行任务的使用?,c#,parallel-processing,parallel-extensions,C#,Parallel Processing,Parallel Extensions,我正在构建一个Windows服务应用程序,它将包含扫描图像的目录作为输入。我的应用程序将遍历所有图像,并对每个图像执行一些OCR操作,以获取条形码、发票号和客户号 一些背景信息: 应用程序执行的任务相当CPU密集 有大量图像要处理,扫描的图像文件很大(~2MB) 该应用程序在一台8核服务器上运行,该服务器具有16GB的RAM 我的问题: 由于它在文件系统上处理图像,我不确定如果我以使用.NET并行任务的方式更改应用程序,它是否真的会产生影响 有人能给我一些建议吗 非常感谢 我认为答案是,‘视情况
非常感谢 我认为答案是,‘视情况而定’ 我会尝试使用某种类型的性能监控(甚至是任务管理器中的监控)来运行应用程序,看看CPU有多高
如果CPU已达到最大值;并行运行会提高性能。如果不是,磁盘是瓶颈,如果没有其他更改,您可能不会获得太多(如果有的话)收益。如果处理一个映像比从磁盘读取N个映像花费更长的时间,那么同时处理多个映像是一个胜利。图您可以在不到100毫秒的时间内(包括寻道时间)从磁盘读取2 MB的文件。图1秒将8个图像读入内存 因此,如果您的图像处理每幅图像花费的时间超过1秒,I/O就不是问题。同时做。如果需要,您可以将其缩小(即,如果处理需要1/2秒,那么您最好只使用4个并发图像)
您应该能够相当快地对此进行测试:编写一个随机从磁盘读取图像的程序,并计算打开、读取和关闭文件的平均时间。还要编写一个程序来处理图像样本,并计算平均处理时间。这些数字应该能告诉您并发处理是否有帮助。是否只有试错法才能找到答案?问题是,经理还没有正式批准使用并行任务。我目前正在调查此事。回答得很好!正是我等待的答案!:)