Java中线程的不同操作需要多长时间?
我编程Java,我想让我的多线程程序运行得更快 我知道设置/读取布尔变量比锁定/解锁互斥锁要快。Java中线程的不同操作需要多长时间?,java,multithreading,performance,Java,Multithreading,Performance,我编程Java,我想让我的多线程程序运行得更快 我知道设置/读取布尔变量比锁定/解锁互斥锁要快。 锁定/解锁比使线程休眠或唤醒更快。 而睡眠/唤醒对比创建全新线程更快 我知道这个过程是针对不同的硬件和操作系统的。但是否有提前期的估计值? 我寻找类似“10次睡眠/醒来持续1次以创建新线程”的东西 我想让我的多线程程序运行得更快 关注这一点的最佳方式是对应用程序的内存和CPU进行配置。我建议首先进行内存分析,因为这通常是最快的胜利。正如您没有提到的,也许您没有考虑过,但如果您不小心,创建和清理对象可
锁定/解锁比使线程休眠或唤醒更快。
而睡眠/唤醒对比创建全新线程更快 我知道这个过程是针对不同的硬件和操作系统的。但是否有提前期的估计值?
我寻找类似“10次睡眠/醒来持续1次以创建新线程”的东西 我想让我的多线程程序运行得更快 关注这一点的最佳方式是对应用程序的内存和CPU进行配置。我建议首先进行内存分析,因为这通常是最快的胜利。正如您没有提到的,也许您没有考虑过,但如果您不小心,创建和清理对象可能会损失50%以上的性能 清理内存消耗后,可以进行CPU评测。这很有用,但有时很难看出如何在不重构应用程序的情况下改进它。这是一个很好的机会,这是你需要做的,以减少消费。对我来说,一个常见的问题是;我知道添加更多的线程真的很有帮助吗。如果我不知道这一点,因为我测量它,它可能同样是伤害。您可能会惊讶地发现,通过去掉线程,您可以大大提高多线程应用程序的速度,尤其是在更糟糕的情况下的延迟 最后,如果您想进入较低级别,请尝试Java任务控制中的飞行记录器。这是一个较低级别的视图。有些人认为这比分析器好,但这些人首先倾向于编写高效的代码。我认为大多数开发人员应该从分析器开始 我知道这个过程是针对不同的硬件和操作系统的。但是否有任何提前期的估计 它们也因您使用它们的程度而不同,在多线程环境中,一个操作会使另一个线程慢多少。i、 e.如果您获得的锁是:
- 只有一个线程使用过它是相当便宜的
- 很少被其他线程共享,它的成本要高得多
- 实际上是被另一个线程持有,这可能需要更长的时间
简而言之,太多取决于您正在做什么,找到瓶颈并减少它,然后找到下一个瓶颈等等。对特定硬件和操作系统的依赖可能太大,甚至无法给出估计。为什么不为您的系统编写一个简单的基准并运行它呢?但是首先想想,你不是正在进入一个可怕的过早优化领域吗?