Tag: 性能

临时variables减慢我的程序?

假设我有以下的C代码: int i = 5; int j = 10; int result = i + j; 如果我循环了这么多次,使用int result = 5 + 10会更快吗? 我经常创build临时variables,使我的代码更具可读性,例如,如果两个variables是从一些数组中获得的,使用一些长expression式来计算索引。 在C中这是不好的性能? 其他语言呢?

什么是微基准?

我听说过这个术语,但我不完全确定它是什么意思,所以: 这是什么意思,什么不是什么意思? 什么是IS和IS不是微基准的一些例子? microbenchmarking有什么危险,你如何避免它? (或者是件好事?)

Map的keySet()和entrySet()的性能注意事项

所有, 任何人都可以让我知道究竟是2之间的性能问题? 该站点: CodeRanch提供了使用keySet()和get()时需要的内部调用的简要概述。 但是,如果任何人都可以在使用keySet()和get()方法时提供关于stream程的确切细节,那将是非常好的。 这将帮助我更好地了解性能问题。

效率:数组与指针

通过指针的内存访问被认为比通过数组的内存访问更有效率。 我正在学习C,上面的内容在K&R中有说明。 具体他们说 任何可以通过数组下标来实现的操作也可以用指针来完成。 指针版本通常会更快 我使用visual C ++拆分了下面的代码(Mine是一个686处理器,我禁用了所有的优化)。 int a[10], *p = a, temp; void foo() { temp = a[0]; temp = *p; } 令我惊讶的是,我发现通过指针访问内存需要3条指令才能通过数组访问内存。 以下是相应的代码。 ; 5 : temp = a[0]; mov eax, DWORD PTR _a mov DWORD PTR _temp, eax ; 6 : temp = *p; mov eax, DWORD PTR _p mov ecx, […]

什么是更有效的:字典TryGetValue或ContainsKey +项目?

从Dictionary.TryGetValue方法的 MSDN条目: 此方法结合了ContainsKey方法和Item属性的function。 如果未find该键,则value参数将为值typesTValue获取适当的默认值; 例如,整数types为0(零),布尔types为false,参考types为null。 如果您的代码经常尝试访问不在字典中的键,请使用TryGetValue方法。 使用此方法比捕获Item属性抛出的KeyNotFoundException更有效。 该方法接近O(1)操作。 从描述来看,不清楚它是否比调用ContainsKey然后再查找更有效率或者更方便。 TryGetValue的实现只是调用ContainsKey然后Item或者实际上比单个查找更有效率? 换句话说,什么是更有效的(即哪一个执行较less的查找): Dictionary<int,int> dict; //…// int ival; if(dict.ContainsKey(ikey)) { ival = dict[ikey]; } else { ival = default(int); } 要么 Dictionary<int,int> dict; //…// int ival; dict.TryGetValue(ikey, out ival); 注意:我不是在寻找一个基准!

jQuery hasClass() – 检查多个类

附: if(element.hasClass("class")) 我可以检查一个类,但有一个简单的方法来检查“元素”是否有许多类中的任何一个? 我在用: if(element.hasClass("class") || element.hasClass("class") … ) 这不是太糟糕,但我正在想像的东西: if(element.hasClass("class", "class2") 其中不幸的是不工作。 有没有这样的事情?

entity framework太慢。 我有什么select?

我遵循了“不要过早优化”的口号,并使用entity framework对我的WCF服务进行了编码。 但是,我分析了性能,entity framework太慢了。 (我的应用程序在大约1.2秒内处理2条消息,其中我正在重写的(遗留)应用程序在同一时间内会同时处理5-6条消息(传统应用程序会调用sprocs来访问其数据库)。 我的分析指出entity framework占用了每条消息的大部分时间。 那么,我有什么select? 那里有更好的ORM吗? (支持正常读写对象的东西,速度很快..) 有没有办法让entity framework更快? ( 注意 :当我说得更快的时候,我的意思是说,从长远来看,不是第一个电话(第一个电话很慢(15秒),但这不是问题,我只需要快点就可以了的消息。) 一些神秘的第三选项,将帮助我更快地从我的服务中获得。 注意:我的大部分数据库交互或创build和更新。 我做了很less的select和删除。

debugging与发布性能

我遇到以下几段: 当您在Visual Studio中编译代码时,“IDE中的Debug vs. Release设置与性能几乎没有区别…生成的代码几乎相同。 C#编译器没有做任何优化。 C#编译器只是吐出了IL …而在运行时它是JITer完成所有的优化。 JITer确实有debugging/发布模式,这对性能有很大的影响。 但是,这并不关键你是否运行你的项目的debugging或发布configuration,关键是debugging器是否连接。 来源在这里 ,播客在这里 。 有人可以指导我一个微软的文章,实际上可以certificate这一点? 谷歌search“ C#debuggingvs发布性能 ”主要返回结果说“ debugging有很多性能打击 ”,“ 发布已优化 ”,“ 不debugging生产部署 ”。

哪个循环具有更好的性能? 为什么?

String s = ""; for(i=0;i<….){ s = some Assignment; } 要么 for(i=0;i<..){ String s = some Assignment; } 我再也不需要在循环之外使用's'了。 第一个选项可能更好,因为每次都没有初始化一个新的string。 然而第二个会导致variables的范围被限制在循环本身。 编辑:在回应Milhous的答案。 将String分配给一个循环内的常量是没有意义的。 不,在这里“一些分配”意味着从列表中获得的变化值被迭代。 另外,这个问题不是因为我担心内存pipe理。 只是想知道哪个更好。

HttpWebRequest是非常慢!

我正在使用一个开源库连接到我的networking服务器。 我担心networking服务器变得非常慢,然后我尝试在Ruby中做一个简单的testing,并得到了这些结果 Ruby程序:10个HTTP GET的2.11秒 Ruby程序:对于100个HTTP GET,18.13秒 C#库:10个HTTP GET 20.81秒 C#库:100个HTTP GET的36847.46秒 我已经分析,发现问题是这个function: 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个请求的ruby程序需要0.3秒。 我也在127.0.0.1上进行所有这些testing,所以networking带宽不是问题。 什么可能导致这个巨大的减速? UPDATE 查看更改的基准testing结果。 我实际上testing了10个GET而不是100个,我更新了结果。