Questions tagged «performance»

对于与代码的度量或改进以及应用程序效率有关的问题。

1
MongoDB的优缺点?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 谁能告诉我mongodb的优缺点是什么,尤其是与关系数据库相比时?包括ACID,可伸缩性,吞吐量,主内存使用量,插入/查询性能和索引大小等。

8
如何计算CPU使用率?
在我的桌面上,我有一个小部件,可以告诉我当前的CPU使用率。它还显示了我两个内核中每个内核的用法。 我一直想知道,CPU如何计算正在使用多少处理能力?此外,如果CPU挂断了一些密集的计算,那么它(或处理此活动的任何对象)如何检查使用情况而又不挂断?


13
HttpWebRequest非常慢!
我正在使用开源库连接到我的Web服务器。我担心Web服务器的运行速度非常慢,然后我尝试在Ruby中进行简单测试,得到了这些结果 Ruby程序:10个HTTP GET的2.11秒 Ruby程序:100个HTTP GET的18.13秒 C#库:10个HTTP GET的20.81秒 C#库:用于100个HTTP GET的36847.46秒 我已经剖析并发现问题在于此功能: private HttpWebResponse GetRawResponse(HttpWebRequest request) { HttpWebResponse raw = null; try { raw = (HttpWebResponse)request.GetResponse(); //This line! } catch (WebException ex) { if (ex.Response is HttpWebResponse) { raw = ex.Response as HttpWebResponse; } } return raw; } 标记行本身需要1秒钟才能完成,而发出1个请求的红宝石程序则需要0.3秒。我也在127.0.0.1上进行了所有这些测试,因此网络带宽不是问题。 是什么原因导致这种巨大的放缓? 更新 检查更改后的基准结果。我实际上测试了10个GET,而不是100个,我更新了结果。

7
Java检查布尔值是否为空
如何检查布尔值是否为null?因此,如果我知道“ hideInNav”为空。如何阻止它进一步执行?像下面这样的东西似乎不起作用,但是为什么呢? boolean hideInNav = parent.getProperties().get("hideInNav", false); String hideNavigation = hideInNav != null ? hideInNav : "";



4
在Javascript中,即使从不抛出异常,使用try-catch块是否昂贵?
当没有任何异常抛出时,使用多个try-catch块是否“缓慢”?我的问题与这一问题相同,但对于JavaScript。 假设我有20个在其中具有try-catch块的函数,以及另一个函数,在这20个函数中的每个函数都调用时,它们都不抛出异常。由于有try-catch块,我的代码执行速度会变慢还是变差?

9
我应该在业务层中使用EJB3还是Spring?
我的团队正在开发一种具有Web前端的面向服务的新产品。在讨论我们将使用哪些技术时,我们决定运行JBoss应用程序服务器,Flex前端(可能使用Adobe AIR进行桌面部署)和Web服务以连接客户端和服务器。 在将哪种服务器技术用于我们的业务逻辑方面,我们陷入了僵局。最大的争论是在EJB3和Spring之间,我们最大的担忧是可伸缩性和性能以及代码库的可维护性。 这是我的问题: 支持或反对EJB3 vs Spring的论据是什么? 我希望每个陷阱有什么陷阱? 在哪里可以找到良好的基准信息?

1
String.Substring()似乎使此代码成为瓶颈
介绍 我有一个很喜欢的算法,我很早以前就做了,我一直在用新的编程语言,平台等来编写和重新编写某种基准。尽管我的主要编程语言是C#,但是我只是从字面上复制粘贴了代码,并稍稍更改了语法,使用Java进行了构建,并发现其运行速度快了1000倍。 编码 有很多代码,但是我仅要介绍这个片段,这似乎是主要问题: for (int i = 0; i <= s1.Length; i++) { for (int j = i + 1; j <= s1.Length - i; j++) { string _s1 = s1.Substring(i, j); if (tree.hasLeaf(_s1)) ... 数据 重要的是要指出,在此特定测试中,字符串s1的长度为1百万个字符(1MB)。 测量 我之所以在Visual Studio中介绍代码执行情况,是因为我认为构造树或遍历树的方法不是最佳方法。检查结果后,该行似乎占据string _s1 = s1.Substring(i, j);了执行时间的90%以上! 其他观察 我注意到的另一个区别是,尽管我的代码是单线程的Java还是设法使用所有8个内核(100%CPU使用率)执行它,而即使使用Parallel.For()和多线程技术,我的C#代码也设法使用了35-最多40%。由于该算法随内核数(和频率)线性扩展,因此我对此进行了补偿,而Java中的代码段执行速度却快了100-1000倍。 推理 我认为发生这种情况的原因与以下事实有关:C#中的字符串是不可变的,因此String.Substring()必须创建一个副本,并且由于它位于具有多次迭代的嵌套for循环中,所以我想很多复制和正在进行垃圾收集,但是,我不知道Substring是如何在Java中实现的。 题 …


5
临时变量会减慢我的程序速度吗?
假设我有以下C代码: int i = 5; int j = 10; int result = i + j; 如果我要遍历多次,使用起来会更快int result = 5 + 10吗?我经常创建临时变量以使我的代码更具可读性,例如,如果两个变量是使用某个长表达式从某个数组中获取的,以计算索引。这在C语言中是不好的表现吗?那其他语言呢?


2
为什么分配单个2D数组要比分配总大小和形状相同的多个1D数组的循环要花更长的时间?
我认为直接创建起来会更快,但是实际上,添加循环只需要一半的时间。发生了什么,放慢了这么多? 这是测试代码 @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.MICROSECONDS) public class Test_newArray { private static int num = 10000; private static int length = 10; @Benchmark public static int[][] newArray() { return new int[num][length]; } @Benchmark public static int[][] newArray2() { int[][] temps = new int[num][]; for (int i = 0; i < temps.length; i++) …
73 java  performance 

6
为什么有时array.push比array [n] = value快?
作为测试某些代码的附带结果,我编写了一个小函数来比较使用array.push方法与直接寻址(array [n] = value)的速度。令我惊讶的是,推送方法通常显示出更快的速度,尤其是在Firefox中,有时在Chrome中。出于好奇:有人对此有解释吗?您可以在此页面上找到测试(单击“数组方法比较”)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.