Questions tagged «performance»

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

30
您如何加速Eclipse?
如何使Eclipse体验更快? 例如:我禁用了所有不需要的插件(Mylyn,Subclipse等)。 我没有使用Mercurial插件,而是将TortoiseHG配置为外部工具。
1274 eclipse  performance 

5
\ d的效率不及[0-9]
我昨天做了评论,其中有人曾用一个答案[0123456789]的正则表达式,而不是[0-9]或\d。我说过使用范围或数字说明符可能比使用字符集更有效。 我决定今天进行测试,令我惊讶的是(至少在C#regex引擎中)\d似乎效率比其他两个似乎相差不大的效率低。这是我的测试输出,超过10000个随机字符串,包含1000个随机字符,其中5077个实际上包含一个数字: Regular expression \d took 00:00:00.2141226 result: 5077/10000 Regular expression [0-9] took 00:00:00.1357972 result: 5077/10000 63.42 % of first Regular expression [0123456789] took 00:00:00.1388997 result: 5077/10000 64.87 % of first 令我惊讶的有两个原因: 我以为该范围将比集合有效得多。 我不明白为什么\d会比差[0-9]。有没有更多的\d不是简单的简写[0-9]? 这是测试代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Text.RegularExpressions; namespace SO_RegexPerformance { …
1246 c#  regex  performance 

30
如何在Python中测量经过时间?
我想要的是开始在我的代码中的某个地方开始计时,然后获取经过的时间,以衡量执行少量功能所花费的时间。我认为我使用的timeit模块错误,但是文档对我来说却很混乱。 import timeit start = timeit.timeit() print("hello") end = timeit.timeit() print(end - start)

11
聚簇索引和非聚簇索引实际上是什么意思?
我对DB的接触有限,只使用DB作为应用程序程序员。我想知道Clustered和Non clustered indexes。我用谷歌搜索,发现的是: 聚集索引是一种特殊的索引,它重新排序表中记录的物理存储方式。因此,表只能有一个聚集索引。聚集索引的叶节点包含数据页。非聚集索引是一种特殊类型的索引,其中索引的逻辑顺序与磁盘上行的物理存储顺序不匹配。非聚集索引的叶节点不包含数据页。相反,叶节点包含索引行。 我在SO中发现的是聚集索引和非聚集索引之间的区别是什么?。 有人可以用简单的英语解释吗?

9
Swift Beta性能:对数组进行排序
我在Swift Beta中实现一种算法,发现性能非常差。深入研究后,我意识到瓶颈之一就是对数组进行排序一样简单。相关部分在这里: let n = 1000000 var x = [Int](repeating: 0, count: n) for i in 0..<n { x[i] = random() } // start clock here let y = sort(x) // stop clock here 在C ++中,类似的操作在我的计算机上花费0.06s。 在Python中,它花费0.6秒(绝招,仅y =整数列表的sorted(x))。 在Swift中,如果使用以下命令进行编译,则需要6s: xcrun swift -O3 -sdk `xcrun --show-sdk-path --sdk macosx` 如果使用以下命令进行编译,则最多需要88s: xcrun swift …

13
什么时候应该在内部联接上使用交叉应用?
使用CROSS APPLY的主要目的是什么? 我已经读过(模糊地通过Internet上的帖子),cross apply如果您要进行分区,则在选择大型数据集时可能会更有效率。(想起分页) 我也知道,CROSS APPLY不需要UDF作为右表。 在大多数INNER JOIN查询(一对多关系)中,我可以将它们重写为use CROSS APPLY,但它们始终会为我提供等效的执行计划。 谁能给我一个很好的例子,说明在CROSS APPLY哪些情况下INNER JOIN行之有效的情况下也有所作为? 编辑: 这是一个简单的示例,其中执行计划完全相同。(向我展示它们的不同之处以及cross apply更快/更高效的地方) create table Company ( companyId int identity(1,1) , companyName varchar(100) , zipcode varchar(10) , constraint PK_Company primary key (companyId) ) GO create table Person ( personId int identity(1,1) , personName varchar(100) , companyId int …

18
Java中toString()中的StringBuilder vs String串联
鉴于以下2种toString()实现方式,首选其中一种: public String toString(){ return "{a:"+ a + ", b:" + b + ", c: " + c +"}"; } 要么 public String toString(){ StringBuilder sb = new StringBuilder(100); return sb.append("{a:").append(a) .append(", b:").append(b) .append(", c:").append(c) .append("}") .toString(); } ? 更重要的是,假设我们只有3个属性,那么这可能没有什么不同,但是您将在什么时候从+concat 切换到 StringBuilder?

13
CSS是否应始终优先于Javascript?
在网上的无数地方,我看到了建议在JavaScript之前加入CSS。推理通常采用以下形式: 在订购CSS和JavaScript时,您希望CSS优先。原因是渲染线程具有渲染页面所需的所有样式信息。如果首先包含JavaScript,则JavaScript引擎必须先解析所有内容,然后再继续下一组资源。这意味着渲染线程无法完全显示页面,因为它没有所需的所有样式。 我的实际测试揭示了完全不同的东西: 我的测试线束 我使用以下Ruby脚本为各种资源生成特定的延迟: require 'rubygems' require 'eventmachine' require 'evma_httpserver' require 'date' class Handler < EventMachine::Connection include EventMachine::HttpServer def process_http_request resp = EventMachine::DelegatedHttpResponse.new( self ) return unless @http_query_string path = @http_path_info array = @http_query_string.split("&").map{|s| s.split("=")}.flatten parsed = Hash[*array] delay = parsed["delay"].to_i / 1000.0 jsdelay = parsed["jsdelay"].to_i delay = 5 …


25
MyISAM与InnoDB [关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 我要说的是一个涉及大量数据库写入的项目(70%的插入和30%的读取)。这个比率还将包括我认为是一次读取和一次写入的更新。读取内容可能很脏(例如,读取时我不需要100%准确的信息)。 有问题的任务将是每小时进行超过一百万次数据库事务。 我已经在网上阅读了很多有关MyISAM和InnoDB之间差异的内容,对于我将用于此任务的特定数据库/表,MyISAM似乎是我的明显选择。从我看来,由于需要支持行级锁定,因此如果需要事务处理,InnoDB很好。 是否有人对这种负载(或更高负载)有任何经验?MyISAM是要走的路吗?

10
为什么2 *(i * i)比Java中的2 * i * i快?
以下Java程序平均需要0.50到0.55秒钟才能运行: public static void main(String[] args) { long startTime = System.nanoTime(); int n = 0; for (int i = 0; i < 1000000000; i++) { n += 2 * (i * i); } System.out.println((double) (System.nanoTime() - startTime) / 1000000000 + " s"); System.out.println("n = " + n); } 如果我更换 2 …


3
为什么Python代码在函数中运行得更快?
def main(): for i in xrange(10**8): pass main() Python中的这段代码在其中运行(注意:计时是通过Linux中的BASH中的time函数完成的。) real 0m1.841s user 0m1.828s sys 0m0.012s 但是,如果for循环未放在函数中, for i in xrange(10**8): pass 那么它会运行更长的时间: real 0m4.543s user 0m4.524s sys 0m0.012s 为什么是这样?

11
用于测试Collat​​z猜想的C ++代码比手写汇编要快-为什么?
我用汇编语言和C ++语言为Euler Q14项目编写了这两种解决方案。它们是用于测试Collat​​z猜想的相同相同的蛮力方法。组装解决方案与 nasm -felf64 p14.asm && gcc p14.o -o p14 C ++使用 g++ p14.cpp -o p14 部件, p14.asm section .data fmt db "%d", 10, 0 global main extern printf section .text main: mov rcx, 1000000 xor rdi, rdi ; max i xor rsi, rsi ; i l1: dec rcx …

15
Java“双括号初始化”的效率?
Наэтотвопросестьответына 堆栈溢出нарусском:Чтотакое双括号инициализация? 在Java的“ 隐藏功能”中,最常见的答案是Double Brace Initialization,其语法非常诱人: Set<String> flavors = new HashSet<String>() {{ add("vanilla"); add("strawberry"); add("chocolate"); add("butter pecan"); }}; 此成语创建一个匿名内部类,其中仅包含一个实例初始化程序,该实例“可以使用包含范围中的任何方法”。 主要问题:这听起来像效率低下吗?它的使用是否应仅限于一次性初始化?(当然还有炫耀!) 第二个问题:新的HashSet必须是实例初始化程序中使用的“ this”……任何人都可以阐明该机制吗? 第三个问题:这个习惯用法是否太晦涩,无法在生产代码中使用? 摘要:非常非常好的答案,谢谢大家。在问题(3)上,人们认为语法应该明确(尽管我建议您偶尔发表评论,尤其是如果您的代码会传递给可能不熟悉它的开发人员时)。 关于问题(1),生成的代码应快速运行。多余的.class文件确实会导致jar文件混乱,并且会稍微减慢程序启动的速度(这要感谢@coobird进行测量)。@Thilo指出垃圾回收可能会受到影响,并且在某些情况下,额外加载的类的内存成本可能是一个因素。 问题(2)对我来说最有趣。如果我理解答案,那么DBI中发生的事情是匿名内部类扩展了new运算符正在构造的对象的类,因此具有引用此构造实例的“ this”值。井井有条。 总的来说,DBI令我感到好奇。Coobird和其他人指出,使用Arrays.asList,varargs方法,Google Collections和建议的Java 7 Collection文字可以实现相同的效果。较新的JVM语言(例如Scala,JRuby和Groovy)还为列表构建提供了简洁的符号,并且可以与Java很好地互操作。鉴于DBI会使类路径混乱,使类加载速度变慢,并使代码更加模糊,我可能会回避它。但是,我打算将这个介绍给一个刚刚获得SCJP并且喜欢Java语义的自然风趣的朋友!;-) 谢谢大家! 7/2017:Baeldung 对双括号初始化有很好的总结,并认为它是反模式。 12/2017:@Basil Bourque指出在新的Java 9中您可以说: Set<String> flavors = Set.of("vanilla", "strawberry", "chocolate", "butter pecan"); 那肯定是要走的路。如果您使用的是早期版本,请查看Google Collections的ImmutableSet。

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.