Tag: 性能

AtomicInteger实现和代码重复

警告:问题有点长,但分隔线下方的部分仅用于好奇。 Oracle的AtomicInteger的JDK 7实现包括以下方法: public final int addAndGet(int delta) { for (;;) { int current = get(); int next = current + delta; // Only difference if (compareAndSet(current, next)) return next; } } public final int incrementAndGet() { for (;;) { int current = get(); int next = current + 1; // Only difference if (compareAndSet(current, […]

什么是Java2d更快的替代品?

我正在寻找一些物理模拟,我需要在Java中快速渲染。 我过去遇到过Java2d的性能问题,那么快速的选择是什么? JOGL明显比Java2d快吗?

在另一个字符串中搜索字符串数组的最有效方法

我有一个大的字符串arrray,看起来像这样:String temp [] = new String [200000]。 我有另一个字符串,让我们称它为bigtext。 我需要做的是遍历temp的每个条目,检查是否在bigtext中找到该条目,然后根据它进行一些工作。 所以,骨架代码看起来像这样: for (int x = 0; x -1 { //do some stuff } else continue; } 因为temp中有很多条目,并且有很多bigtext实例,所以我想以最有效的方式做到这一点。 我想知道如果有更好的方法可以做到这一点,我所概述的是最有效的方法来迭代搜索。 谢谢, 埃利奥特

100%CPU使用率的Java线程优化

我有一个应用程序接受队列上的工作,然后旋转,在独立的线程上完成。 线程数量不大,比如高达100,但这些都是密集型任务,可以快速将CPU提升到100%。 为了最快地完成大部分工作:我最好在我需要做更多工作时启动更multithreading,让Java线程调度程序处理分配工作,或者更聪明地管理工作负载以保持CPU低于100%让我更快? 这台机器专用于我的java应用程序。 编辑: 感谢您的精彩投入! 这些任务具有不同的复杂性并涉及I / O,因此具有4个低线程池可能只能将CPU运行到20%。 我无法知道有多少任务实际上将CPU带到100%。 我的想法是我应该通过RMI监控CPU并动态上下拨打工作,或者我应该不关心并让操作系统处理它。

executeBatch在Prepared Statement上的效果如何?

根据这个问题,问一切:executeBatch方法有效吗? 是否存在性能基准,即…如果要插入1000条记录,使用executeBatch而不是executeUpdate可以节省x个数据库周期数量? 或者这只是一个惯例? 编辑:以下是我正在使用的:Z / OS上托管的DB2 V 8.1,这是一个Web应用程序,它将在最糟糕的情况下一次性插入80,000条记录。

scala范围与列表在大型集合上的性能

我为10,000,000个元素运行了一组性能基准测试,并且我发现每个实现的结果差别很大。 任何人都可以解释为什么创建Range.ByOne会导致性能优于简单的基元数组,但将相同范围转换为列表会导致性能甚至比最差情况更糟糕吗? 创建10,000,000个元素,并打印出模数为1,000,000的元素。 JVM大小始终设置为相同的最小值和最大值:-Xms?m -Xmx?m import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit._ object LightAndFastRange extends App { def chrono[A](f: => A, timeUnit: TimeUnit = MILLISECONDS): (A,Long) = { val start = System.nanoTime() val result: A = f val end = System.nanoTime() (result, timeUnit.convert(end-start, NANOSECONDS)) } def millions(): List[Int] = (0 to 10000000).filter(_ % 1000000 == 0).toList val results […]

我可以在java中连续分配对象吗?

假设我有一大堆相对较小的对象,我需要经常迭代。 我想通过提高缓存性能来优化我的迭代,所以我想在内存上连续分配对象 [而不是引用],这样我就可以减少缓存丢失,整体性能可以更好。 在C ++中,我可以只分配一个对象数组,它会按照我的意愿分配它们,但是在java中 – 在分配数组时,我只分配引用,并且一次只分配一个对象。 我知道如果我“一次”分配对象[一个接一个],jvm 最有可能将对象分配为尽可能连续,但如果内存碎片化则可能还不够。 我的问题: 有没有办法告诉jvm在我开始分配对象之前对内存进行碎片整理? 是否足以确保[尽可能]连续分配对象? 这个问题有不同的解决方案吗?

为什么static / member变量比局部变量慢?

我见过这个post: 速度与条件相比 我自己上课检查速度 public class Question { static long startTime; static long elapsedTime; static String mStatic; private String mPublic; public static void main(String[] args) { Question q = new Question(); q.executeGlobal(); q.executeStatic(); q.executeLocal(); } public void executeLocal() { String mLocal; startTime = System.nanoTime(); for (int i = 0; i < 1000000000; i++) { mLocal = […]

HyperSQL(HSQLDB):大量的插入性能

我有一个应用程序必须将大约1300万行大约10个平均长度的字符串插入到嵌入式HSQLDB中。 我一直在调整东西(批量大小,单线程/multithreading,缓存/非缓存表,MVCC事务,log_size / no日志,定期调用checkpoint ,……),它仍然需要7个小时的16核, 12 GB机器。 我之所以选择HSQLDB,是因为我认为如果我充分利用所有这些核心,我可能会获得可观的性能提升,但我真的开始怀疑我的决定。 有人能告诉我银弹吗?

是否有任何提示和技巧使犀牛表现更快?

是否有任何提示和技巧使犀牛表现更快? 我正在尝试使用Rhino中的uglifyJs压缩大型js文件,这需要一分多钟。 在java服务器端空间中你有任何关于rhino的提示或其他选择吗?