我们有一种工具可以从一些光学介质中加载数据,一旦它们全部复制到硬盘驱动器中,就可以通过第三方工具进行处理。我想优化这个过程,这样每个文件在读入时都会被处理。问题是,第三方工具(我自然不能改变)有12秒的启动开销。在尽快完成整个过程方面,我能处理的最好方法是什么?我可以在每次运行中将任意数量的文件传递给处理工具,因此我需要能够确切地确定何时运行该工具以获得总体上最快的结果。被复制的数据可以是任何一个大文件(在完全复制之前无法处理)到数百个小文件。正在加载数据时正在处理数据
0
A
回答
0
最简单的方法是创建并运行2个线程,一个运行该工具,一个加载数据。启动12秒计时器并触发两个线程。在每个文件加载完成后检查传递的时间。如果超过12秒,请将数据提取到运行该工具的线程中。重新启动将数据并行加载到之前批量的处理。一旦前面的批量处理完成后,重新启动12秒计时器并在每次文件加载完成时继续检查它。重复,直到没有更多的数据。
为了获得更好的结果,可能需要更复杂的解决方案。您可以执行一些基准测试来评估平均数据加载时间。由于小文件和大文件可能会有所不同,因此可能需要针对不同类别的文件(根据大小)进行几次评估。最佳资源利用率将是以新数据到达的相同速率处理数据的资源利用率。处理时间包括12秒启动。基准测试应该为您提供处理线程数与读取线程数的比率(您还可以根据传入文件大小减少/增加活动读取线程的数量)。实际上,这是多个生产者和消费者的producer-consumer问题的变体。
相关问题
- 1. 在Highcharts上显示消息“正在加载...”正在从数据加载数据
- 2. 数据处理不正常
- 3. AngularJS Textarea如果数据正在加载
- 4. MySQL正在加载数据错误
- 5. 指示用户正在加载数据
- 6. 正在载入数据库?
- 7. jHipster - 正在载入数据
- 8. 当数据库完成处理/加载数据时执行宏
- 9. Android:ListFragment,没有数据和数据正在加载的情况下
- 10. 加载数据时在加载数据图标在backgrid.js
- 11. 检查从数据库检索的数据是否正在加载OR lazy正在加载
- 12. 处理Ping数据(正则表达式)
- 13. 猪处理不正确的数据
- 14. 当同步Realm移动数据库时显示正在加载
- 15. 当后台线程正在将数据处理到数据库时如何处理DB.close?
- 16. 加载前处理WebKit CSS数据?
- 17. 数据只在加载时加载?
- 18. Kendo UI Combobox - 正在载入庞大的数据加载大数据
- 19. 正在处理 - 正在处理键
- 20. 如何在请求正在处理时显示加载gif?
- 21. 正确处理分支负载后的数据中止异常
- 22. Cassandra加载数据不正确
- 23. 如何正确加载数据本机
- 24. ContactsContract.CommonDataKinds.Phone CONTENT_FILTER_URI不加载正确的数据
- 25. 如何正确加载数据表
- 26. 正在下载谷歌AdWords数据
- 27. 正在下载JSON数据iOS 10
- 28. 正在下载Google App Engine数据库
- 29. 正在卸载数据捣弄进程
- 30. 在数据处理完数据后卸载模态
你正在运行它的系统是什么?在提供第三方工具之前,您可以连接文件吗? – piokuc
Windows 7 x64。我真的不知道如何连接文件会有帮助吗?这意味着在开始之前我必须等待所有文件的复制,所以我什么也得不到。 12s的开销是每次运行,而不是每个文件,所以当复制所有文件后,所有文件在一个批处理中都没有问题。当我多次运行它时,这只是一个问题。 – spencercw