草庐IT

OPTIMIZATION

全部标签

java - Hibernate 的批量抓取算法是如何工作的?

我在“Manning-JavaPersistencewithHibernate”中找到了关于批量获取算法的描述:Whatistherealbatch-fetchingalgorithm?(...)Imagineabatchsizeof20andatotalnumberof119uninitializedproxiesthathavetobeloadedinbatches.Atstartuptime,Hibernatereadsthemappingmetadataandcreates11batchloadersinternally.Eachloaderknowshowmanyproxie

java - 使用 BoneCP : Handling connections from the pool

我刚开始使用BoneCP,这是我第一次使用连接池。我对应该如何使用它感到有些困惑。目前我将BoneCP对象保存为静态变量,因此我可以在不同的连接之间使用它。当我完成连接后,我用connection.close()关闭它。我应该这样做,还是不应该关闭它以使其能够被池重用?这是我当前获取连接的实现:privatestaticBoneCPconnectionPool;publicConnectiongetConnection()throwsSQLException{if(connectionPool==null){initPool();}returnconnectionPool.getCon

java - HotSpot 可以内联 lambda 函数调用吗?

考虑代码:someList.forEach(x->System.out.format("element%s",x));理论上,通过首先内联forEach方法,然后在内联的forEach中内联lambda函数体,应该可以内联此代码并消除间接函数调用>代码。HotSpot是否能够执行此优化?在特定情况下是否执行它有哪些限制? 最佳答案 您的lambda表达式被编译成普通方法,而JRE将生成一个实现功能接口(interface)并调用该方法的类。在当前的HotSpot版本中,这个生成的类几乎像普通类一样工作,主要区别在于它可以调用priv

java - 克隆是否提供了优于构造函数/工厂方法的性能改进?

我正在维护一个较旧的Java代码库(jvm1.4),它似乎使用克隆作为对象实例化的替代方法,我猜这是一种性能优化。这是一个人为的例子:publicclassFoo{privateSomeObjectobj;//SomeObjectimplementsCloneablepublicFoo(){obj=newSomeObject();obj.setField1("abc");//thesefieldswillhavethesamevalueeverytimeobj.setField2("def");}publicvoiddoStuff(){SomeObjectnewObj=obj.clon

java - -XX :+PrintCompilation output? 中的这个新列是什么

最近在使用-XX:+PrintCompilation(JDK8r111)检查方法编译时,我注意到一个新列没有出现在documentation中。我可以find关于主题:thiscolumn||v6001s3java.util.Hashtable::get(69bytes)60143java.lang.Character::toLowerCase(6bytes)60183java.io.UnixFileSystem::normalize(75bytes)602123java.lang.ThreadLocal::get(38bytes)602143java.lang.ThreadLocal

Java 列表 : initial size

哪种方式更适合初始化Java列表:newArrayList(futureSize)newArrayList(futureSize+1)(为了防止调整列表的大小)futureSize是列表一旦填充后的future大小。注意:如果您要评论/回答有关“过早优化是...”、“您应该改为...”的任何内容,请不要。我正在寻找我的问题的答案,仅此而已。 最佳答案 从add(Ee)和(类似方法)的实现可以看出publicbooleanadd(Ee){ensureCapacity(size+1);elementData[size++]=e;retu

Java - SAM类型优化

Aworkingdocument描述ProjectLambda的状态提到了所谓的SAM(单一抽象方法)类型。据我所知,当前的lambda提案不会影响运行时,只会影响编译器,因为它可以实现从lambda表达式到这些类型的自动转换。我认为在理想情况下,SAM类型的实例可以在内部由函数指针表示。因此JVM可以避免为这些实例分配内存。我想知道现代虚拟机是否能够提供这种优化。 最佳答案 @Tamás您可能应该阅读BrianGoetz的邮件列表帖子:http://mail.openjdk.java.net/pipermail/lambda-de

java - 成员顺序是否会像在 C 或 C++ 中那样在 Java 中产生性能差异?

在C和C++中,不允许编译器对结构的数据成员重新排序,因此如果您不小心对它们进行排序,最终会浪费空间。例如:structS{inti;void*p;inti2;};在具有32位int和64位指针的平台上,i将放在第一位,然后是32位填充,以便p可以是64位对齐的。i2然后占据下一个单词的一半,然后是另外32位的填充。生成的结构有24个字节长,而如果先声明p,它只有16个字节长。如果数组中有很多这样的结构,查找和删除填充有时可能是一项重要的优化,以节省内存并减少缓存流失。我很想知道Java是否具有相同的功能。未装箱的类型(例如int和boolean)是否与引用大小相同或更小?如果它们更小

java - 是否优化过一次使用的变量定义?

考虑以下方法:privatestaticlongmaskAndNegate(longl){intnumberOfLeadingZeros=Long.numberOfLeadingZeros(l)longmask=CustomBitSet.masks[numberOfLeadingZeros];longresult=(~l)&mask;returnresult;}该方法可以简写为:privatestaticlongmaskAndNegate(longl){return(~l)&CustomBitSet.masks[Long.numberOfLeadingZeros(l)];}这两种表示在

java - 我怎样才能使 Java3D 启动得更快?

我的应用程序需要几秒钟才能显示第一个带有Canvas3D的窗口。我分析了它,发现瓶颈在SimpleUniverse.getPreferredConfiguration();第一次调用需要三四秒,必须在渲染场景之前调用它。我正在使用Direct3D渲染器(-Dj3d.rend=d3d),因为OpenGL渲染器在我的显卡上崩溃了。我有一个集成的ATI卡,运行一个显示器。 最佳答案 速度变慢的原因是SimpleUniverse.getPreferredConfiguration()使用的GraphicsDevice.getConfigur