我有一个java系统在进行大量的i / o操作。 我确实理解非CPU绑定任务可以从超过#CPU的线程数中受益。
由于I / O操作时间不确定(我不知道我应该在池中初始化多少个线程)。我想测量由于我在java程序中初始化的线程数而发生的上下文切换。
最后由于上下文切换开销,我想调整线程池的大小。
答案 0 :(得分:0)
这里有两个选项:
显然,选项1可以更好地理解 - 但它也需要更多的工作。
答案 1 :(得分:0)
您可以使用良好的分析工具(如appdynamics)来衡量程序在IO和CPU等待中花费的时间,并获得有关程序的大量有趣见解,从而优化代码。 一旦您获得有关代码的见解,您就可以逐步测试不同大小的线程池,并在Appdynamics中查看效果并选择最佳大小,从而为您提供最佳性能。
注意: - Appdynamics提供免费试用版,并作为SAAS提供。我已多次使用它并喜欢它。