草庐IT

PERFORMANCE

全部标签

java - Java在canvas之外绘制东西,会不会影响性能?

如果我用-80和-90之类的坐标绘制某些东西,它会像实际在内部绘制一样影响性能吗?检查最终图像是否会出现在屏幕上真的值得吗?(如果不愿意就不画了) 最佳答案 如果我用-80和-90之类的坐标绘制某些东西,它会像实际在内部绘制一样影响性能吗?有点,但不像它在屏幕内那么多。检查最终图像是否会出现在屏幕上真的值得吗?(如果不愿意就不画了)实际上永远不值得在一个库中实现你自己的剔除/裁剪,因为库已经必须进行检查以避免写入内存越界,通常明智的做法是打赌图书馆的检查方式既聪明又快速。因此,如果您要在顶部添加您自己的基本检查,现在您只需让常规的屏

java - 对于非常大的数据集,我应该使用 `HashSet` 还是 `TreeSet`?

我需要在数据结构中存储2到1500万个帐户(这是一个长度为15的String),用于查找目的和检查唯一性。最初我计划将它们存储在HashSet中,但我怀疑查找速度会因为哈希冲突而变慢,最终会比TreeMap(使用二分查找)慢。不需要对数据进行排序。我正在使用Java7。我有64G系统,其中48G专用于此应用程序。这个问题不是HashSetandTreeSetperformancetest的重复问题因为这个问题是关于将元素添加到Set的性能,而这个问题是关于检查现有Set的性能重复值。 最佳答案 如果您有48GB的专用内存来存储200

java - Lambda 性能改进,Java 8 对比 11

我在lambda与方法引用上运行了一些JMH测试,看起来类似于:IntStream......reduce(Integer::max)vs.IntSream.......reduce((i1,i2)->Integer.max(i1,i2))我注意到,在Java8中,方法引用的执行速度大约是lambda的5倍。当我在Java11中运行测试时,这两种方法的执行时间与Java8中的方法引用差不多快。因此Java11中的lambda和方法引用之间的性能没有重大差异。我的问题是:从Java8到11进行了哪些改进以提高此性能?我正在使用OpenJDK。编辑我的基准:@BenchmarkMode(M

java - 为高响应服务器应用程序调整 JVM (GC)

我在Linux64位上运行一个应用服务器,它有8个核心CPU和6GB内存。服务器必须高度响应。经过一些检查,我发现服务器上运行的应用程序创建了相当大量的短生命对象,只有大约200~400MB的长生命对象(只要没有内存泄漏)看完http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html我使用这些JVM选项-server-Xms2g-Xmx2g-XX:MaxPermSize=256m-XX:NewRatio=1-XX:+UseConcMarkSweepGC结果:minorGC耗时0.01~0.02秒,majorGC

java - 检查 string.length == 0 是否仍然比检查 string == ""更快?

大约7-8年前,我从一本编程书籍中读到,检查string.length==0是一种检查空字符串的更快方法。我想知道这句话在今天是否仍然适用(或者它是否曾经是真的),因为我个人认为string==""更直接、更易读。我主要处理.NET和java等高级语言。 最佳答案 在Java中进行该测试的最佳方法是"".equals(string)因为它处理字符串为空的情况。至于哪个更快,我想答案是无所谓。两者都非常快,实际上哪一个最快取决于内部编译器的实现。 关于java-检查string.lengt

java - 打印成本的“经验法则”

我注意到了inti=10000000;booleanisPrime=false;while(!isPrime){i++;System.out.println(item);//thiskillsperformanceisPrime=checkIfPrime(i);}}打印变量的当前值会降低性能。我想偶尔打印一次,但要保持这种操作的成本较低。如何将打印到屏幕的成本与计算成本进行比较?是否有任何技巧可以最大限度地减少此成本[我应该打印10条记录中的一条,还是由于条件检查,此成本会一样高]?为什么我需要这个?好吧,我正在用Java做一些有趣的事情(比如“为欧拉的结合找到一个反例......27

Java 垃圾收集时间?

我在Java中有一个对性能非常敏感的应用程序。(我知道我实际上应该使用C或其他东西。但现在是Java。)我试图避免创建和丢弃对象。现在我需要知道还有多少垃圾收集仍在进行。我怎样才能知道?如果可能的话,我希望有一种以毫秒或纳秒为单位的数字,不需要安装更多软件。 最佳答案 或者你可以让JVM打印GCActivity。我有这些设置:-verbose:gc-XX:+PrintGCTimeStamps-XX:+PrintGCDetails-XX:+PrintTenuringDistribution-Xloggc:logs/gc.logGCAc

java - 写入 Lucene 索引,一次一个文档,随着时间的推移变慢

我们有一个程序,它持续运行,做各种事情,并更改我们数据库中的一些记录。这些记录使用Lucene编制索引。所以每次我们改变一个实体时,我们都会做类似的事情:打开数据库事务,打开LuceneIndexWriter在事务中对数据库进行更改,并使用indexWriter.deleteDocuments(..)然后indexWriter.addDocument(..)在Lucene中更新该实体.如果一切顺利,提交数据库事务并提交IndexWriter。这工作正常,但随着时间的推移,indexWriter.commit()需要越来越多的时间。最初它需要大约0.5秒,但经过数百次此类交易后,它需要超

java - 使用 'this' 关键字会影响 Java 性能吗?

使用this关键字会影响Java性能吗?在这个例子中:classProg{privateintfoo;Prog(intfoo){this.foo=foo;}}执行以下操作是否会产生性能开销?classProg{privateintfoo;Prog(intbar){foo=bar;}}今天早些时候,我和几个同事正在讨论这个问题,但没有人能给出我们都同意的答案。有确定的答案吗? 最佳答案 不,一点也不。它只是同一事物的不同语法。它被编译成完全相同的字节码。所以像人一样说:你用两种不同的方式告诉编译器两次完全相同的事情要做什么。javap

java - 最高效 - 性能明智 - 用于 JVM 间通信

我有一个Java应用程序需要不同进程之间的通信。进程可以运行在相同的JVM或不同的JVM中,但运行在同一台机器上。我的应用程序需要向另一个进程(相同或不同的JVM)提交“消息”,但忘记了它。类似于IBM“MQ”之类的消息队列,但是简单,并且只使用内存,没有硬盘的IO以提高性能。我不确定性能规范的最佳方法是什么。我想知道RMI在性能方面是否高效,我认为它需要一些开销。使用本地主机的TCP/IP套接字怎么样?还有什么想法吗? 最佳答案 IwonderifRMIisefficientintermsofPerformance,Ithinki