草庐IT

速度环

全部标签

java - 如何在没有缓存的情况下测量文件读取速度?

我的java程序大部分时间都花在读取一些文件上,我想优化它,例如,通过使用并发、预取、memorymappedfiles,或其他。没有基准测试的优化是无意义的,所以我进行了基准测试。然而,在基准测试期间,整个文件内容都缓存在RAM中,这与实际运行不同。因此,基准测试的运行时间要小得多,而且很可能与现实无关。我需要以某种方式告诉操作系统(Linux)不要缓存文件内容,或者最好在每次基准测试运行之前清除缓存。或者可能会占用大部分可用RAM(32GB),因此只有一小部分文件内容适合。如何做到这一点?我正在使用caliper用于基准测试,但在这种情况下,我认为没有必要(这绝不是微基准测试)并且

java - 适合内存的顺序数据的 QuickSort 和 MergeSort 性能与磁盘上访问顺序数据的速度比较慢

以下引自《与其他排序算法的比较》来自WikipediaMergeSort的部分页Ontypicalmodernarchitectures,efficientquicksortimplementationsgenerallyoutperformmergesortforsortingRAM-basedarrays.[citationneeded]Ontheotherhand,mergesortisastablesortandismoreefficientathandlingslow-to-accesssequentialmedia.我的问题:当要排序的数据都可以放入内存时,为什么Quick

java - Eclipse Java 远程调试器在 VPN 上速度极慢

有时我被迫离开办公室工作,这意味着我需要通过VPN连接到我的实验室。我注意到在这种情况下使用Eclipse进行远程调试非常慢。慢到调试器需要5-7分钟才能连接到远程jvm。连接后,每次单步执行断点/行可能需要20-30秒,而且通常会断开连接,让我不得不重新开始。谁能解释这是为什么,即使没有可用的解决方案?考虑到远程调试器的行为,我通过VPN的延迟几乎不符合人们的预期。我通过VPN以最小的滞后/阻碍做各种其他事情。我真的很难理解为什么远程调试器受VPN的影响如此之大,而基本上所有其他网络操作都很好。谢谢, 最佳答案 感谢您尝试提供帮助

java - 使用 ArrayList 或 HashMap 以获得更好的速度

我需要对象A的“列表”或“map”...。该列表将从另一个ArrayList添加。当A的id参数等于时,对象A被认为与另一个相等。我的问题是我只想添加一个不存在于我的列表中的对象。我想知道两种实现方案之间的区别。使用ArrayList或HashMap1.ArrayList:for(Aa:source){if(!(ainArrayList))addToArrayList();}2.HashMapfor(Aa:source){hasmap.put(a.id,a)}添加大量对象(超过1000个对象或更大数量的对象)的速度会更快我的问题有更好的模式吗??? 最佳答案

java - 为什么 ArrayList 的增长速度是 1.5,而 Hashmap 是 2?

根据SunJava实现,在扩展期间,ArrayList增长到其初始容量的3/2,而对于HashMap,扩展率是两倍。这背后的原因是什么?根据实现,对于HashMap,容量应该总是2的幂。这可能是HashMap行为的一个原因。但在那种情况下,问题是,对于HashMap,为什么容量应该始终是二的幂? 最佳答案 增加ArrayList容量的昂贵部分是将支持数组的内容复制到一个新的(更大的)数组。对于HashMap,它正在创建一个新的后备数组并将所有映射条目放入到新数组中。而且,容量越大,发生碰撞的风险就越低。这更昂贵并解释了为什么扩展系数

java - 速度和 $foreach.count

我使用的是velocity1.7,在foreach循环中我想打印计数。在模板中,我在#foreach/#end部分中有以下字符串:Count:$foreach.count并期待在渲染结果中看到类似的东西Count:1...Count:2...但我只看到:Count:$foreach.count...Count:$foreach.count...知道我做错了什么吗? 最佳答案 $foreach.count和$counter都不适合我。Thisanswer建议使用$velocityCount,它对我有用。

java - 除了互斥锁或垃圾收集之外还有哪些机制可以减慢我的多线程 Java 程序的速度?

问题我有一段java代码(JDK1.6.0._22,如果相关)实现了一个无状态、无副作用且没有互斥锁的函数。但是它确实使用了大量内存(我不知道这是否相关)。过去我访问过Sun实验室并收集了标准的“性能与线程数”曲线。由于此函数没有互斥锁,因此它有一个漂亮的图形,尽管垃圾收集随着线程数量的增加而启动。经过一些垃圾收集调整后,我能够使这条曲线几乎平坦。我现在正在英特尔硬件上做同样的实验。硬件有4个CPU,每个8个内核和超线程。这给出了64个availableProcessors()。不幸的是,“性能与线程数”的曲线对于1、2、3个线程和3个线程的上限很好地缩放。在3个线程之后,我可以在任务

java - 速度找不到资源

出了点问题,这很令人沮丧。我在velocity的主页上读到,当我运行一个webapp时,应该设置一些属性。我已经做到了,但无论我做什么,我都会不断遇到同样的错误。这是我设置Prop和使用速度的地方publicclassConfirmationMailGeneratorimplementsMailGenerator{privateBasicUseruser;privateStringhtmlTemplate="HTMLConfirmationMailTemplate.vsl";privateStringplainTemplate="PlainConfirmationMailTemplat

java - 如何有效地使用 javax.mail API 发送群发邮件? &我们可以使用重用经过身份验证的 session 来提高速度吗?

我可以使用javax.mailAPI发送邮件。但这里的问题是每封邮件平均需要大约4.3秒才能发送到目的地。如果我按顺序发送20封邮件,大约需要86.599秒。对于我的要求,这种方法行不通。我正在寻找一种可以在更短时间内发送大量邮件的方法。当我查看调试日志时,API正在尝试针对它发送的每条消息向SMTP服务器进行身份验证。但是我只创建了一次session,并且对我发送的所有邮件都使用了同一个session。现在我的问题是,每次向smtp服务器验证自己时,这不是一个开销过程。有没有更好的方法?以下是您可能会觉得有用的日志跟踪。250-AUTHLOGINPLAINXOAUTHXOAUTH22

java - 如何衡量用 Java 编写的代码的速度? (人工智能算法)

如何衡量用Java编写的代码的速度?我计划开发软件,使用目前可用的所有AI和ML算法来解决数独问题,并将时间与简单的蛮力方法进行比较。我需要测量每个算法的时间,我想请教一下最好的方法是什么?非常重要,无论CPU功率/内存如何,程序都必须在任何机器上都有用。谢谢。 最佳答案 正如其他人所建议的,System.currentTimeMillis()非常好,但请注意以下注意事项:System.currentTimeMillis()测量经过的物理时间(“挂钟时间”),而不是CPU时间。如果其他应用程序正在机器上运行,您的代码将占用更少的CP