Questions tagged «performance»

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

10
三元运算符的速度是if-else块的两倍吗?
我到处都读到,三元运算符应该比其等效的if- else块更快,或至少相同。 但是,我进行了以下测试,发现情况并非如此: Random r = new Random(); int[] array = new int[20000000]; for(int i = 0; i < array.Length; i++) { array[i] = r.Next(int.MinValue, int.MaxValue); } Array.Sort(array); long value = 0; DateTime begin = DateTime.UtcNow; foreach (int i in array) { if (i > 0) { value += 2; …

4
为什么Haskell(GHC)这么快?
Haskell(使用GHC编译器)比您期望的要快得多。正确使用它可以接近低级语言。(Haskellers最喜欢做的事情是尝试获得5%的C(甚至击败它),但这意味着您正在使用效率低下的C程序,因为GHC将Haskell编译为C。)我的问题是,为什么? Haskell是声明性的,基于lambda演算。机器架构显然必须基于图灵机。实际上,Haskell甚至没有特定的评估顺序。另外,无需处理机器数据类型,而是始终创建代数数据类型。 最奇怪的是高阶函数。您可能会认为,即时创建函数并将其扔掉会使程序变慢。但是使用高阶函数实际上会使Haskell更快。实际上,为了优化Haskell代码,您似乎需要使其更优雅,更抽象,而不是像机器一样。如果不能改善Haskell的更高级功能,它们似乎都不会影响它的性能。 抱歉,这听起来很抱歉,但这是我的问题:考虑到Haskell的抽象性质以及与物理机器的区别,为什么Haskell(与GHC编译)这么快? 注意:我说C和其他命令式语言在某种程度上类似于图灵机的原因(但在某种程度上来说,Haskell与Lambda微积分不一样)是,在命令式语言中,您具有有限数量的状态(即行号)以及Tape(撞锤),以便状态和当前磁带决定对磁带执行什么操作。从图灵机到计算机的过渡,请参阅Wikipedia条目,图灵机等效项。

17
将对象以摊销的固定时间O(1)附加到R中的列表吗?
如果我有一些R list mylist,则可以obj像这样添加一个项目: mylist[[length(mylist)+1]] <- obj 但是肯定有一些更紧凑的方法。当我刚加入R时,我尝试这样写lappend(): lappend <- function(lst, obj) { lst[[length(lst)+1]] <- obj return(lst) } 但是由于R的按名称调用语义(当然lst会在调用时有效复制,因此当然不起作用,因此对的更改lst在.scope范围之外是不可见的lappend()。我知道您可以在R函数中进行环境黑客攻击,以到达函数范围并更改调用环境,但这似乎是编写简单附加函数的重击。 谁能建议一种更漂亮的方式呢?奖励积分(如果它适用于矢量和列表)。
245 r  performance  list  append  big-o 

28
C ++比C#快多少?
还是现在相反? 据我所知,在某些领域C#被证明比C ++更快,但是我从来没有胆量亲自测试它。 以为你们中的任何人都可以详细解释这些差异,或者将我指向正确的位置以获取有关此信息。

15
numpy:数组中唯一值的最有效频率计数
在numpy/中scipy,是否有一种有效的方法来获取数组中唯一值的频率计数? 遵循以下原则: x = array( [1,1,1,2,2,2,5,25,1,1] ) y = freq_count( x ) print y >> [[1, 5], [2,3], [5,1], [25,1]] (对于您来说,R用户在那里,我基本上是在寻找该table()功能)

16
模拟慢速网络连接的网络工具
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 4年前关闭。 改善这个问题 当我的浏览器和Web服务器位于同一LAN或同一台计算机上时,我想直观地评估几种Internet连接类型(DSL,电缆,T1,拨号等)的网页响应时间。是否有任何简单的网络工具或浏览器插件会降低网络带宽,以模拟不同的实际连接方案。 我对此表示感谢。

30
在Web应用程序上执行压力测试?
过去,我使用Microsoft Web Application Stress Tool和Pylot对Web应用程序进行压力测试。我编写了一个简单的主页,登录脚本和网站演练(在一个电子商务网站中,向购物车中添加了一些商品并结帐)。 仅仅与少数开发人员一起努力访问主页几乎总是可以找到一个主要问题。更多的可扩展性问题将在发布的第二阶段甚至更多阶段出现。 我使用的工具的URL是Microsoft Homer(又名Microsoft Web Application Stress Tool)和Pylot。 这些工具生成的报告对我而言从来没有多大意义,我将花费大量时间试图弄清楚该站点能够支持哪种并发负载。始终值得这样做,因为总是会出现最愚蠢的错误和瓶颈(例如,Web服务器配置错误)。 您做了什么,使用了哪些工具,您的方法取得了成功?对我来说最有趣的部分是提出一种有意义的公式,用于根据压力测试应用程序报告的数量来计算应用程序可以支持的并发用户数。


23
在高负载站点中使用PHP的策略
在回答这个问题之前,我还没有开发出足以达到高服务器负载的流行方法。将我当作(叹息)刚刚降落在地球上的外星人,尽管它知道PHP和一些优化技术。 我正在用PHP开发一个工具,如果可以的话,它可以吸引很多用户。但是,尽管我完全有能力开发该程序,但在制作可以处理大量流量的东西时却一无所知。因此,这里有一些问题(也可以将这个问题转换为资源线程)。 资料库 目前,我计划在PHP5中使用MySQLi功能。但是,如何设置与用户和内容相关的数据库?我实际上需要多个数据库吗?目前,所有内容都混杂在一个数据库中-尽管我一直在考虑将用户数据分发到一个数据库,将实际内容分发到另一个数据库,最后将核心站点内容(模板母版等)分发到另一个数据库。我这样做的原因是,将查询发送到不同的数据库将减轻它们的负载,因为一个数据库= 3个负载源。如果它们都在同一服务器上,这是否仍然有效? 快取 我有一个模板系统,用于构建页面和换出变量。主模板存储在数据库中,每次调用模板时,都会调用其缓存副本(一个html文档)。目前,这些模板中有两种类型的变量-静态变量和动态变量。静态变量通常是页面名称,站点名称之类的东西,它们不经常更改。动态变量是在每次页面加载时都会更改的内容。 我对此的疑问: 说我对不同的文章有意见。这是一个更好的解决方案:每次页面加载时都存储简单的评论模板并呈现评论(通过DB调用),或者将评论页面的缓存副本存储为html页面-每次添加/编辑/删除评论时页面被重新缓存。 最后 有没有人有任何技巧/指针在PHP上运行高负载站点。我很确定这是一种可行的语言-Facebook和Yahoo! 赋予它很高的优先级-但是我应该注意哪些经验?

12
“切换”比“ if”快吗?
是一种switch说法实际上比更快的if声明? 我在带有/Ox标记的Visual Studio 2010的x64 C ++编译器上运行了以下代码: #include <stdlib.h> #include <stdio.h> #include <time.h> #define MAX_COUNT (1 << 29) size_t counter = 0; size_t testSwitch() { clock_t start = clock(); size_t i; for (i = 0; i < MAX_COUNT; i++) { switch (counter % 4 + 1) { case 1: counter += …

12
用C ++快速编写二进制文件
我试图将大量数据写入我的SSD(固态驱动器)。大量是指80GB。 我浏览了网络以寻找解决方案,但是我想到的最好的方法是: #include <fstream> const unsigned long long size = 64ULL*1024ULL*1024ULL; unsigned long long a[size]; int main() { std::fstream myfile; myfile = std::fstream("file.binary", std::ios::out | std::ios::binary); //Here would be some error handling for(int i = 0; i < 32; ++i){ //Some calculations to fill a[] myfile.write((char*)&a,size*sizeof(unsigned long long)); } myfile.close(); …

8
System.currentTimeMillis()与新Date()与Calendar.getInstance()。getTime()
Наэтотвопросестьответына 堆栈溢出нарусском:。Чтобыстрее - System.currentTimeMillis的()или日期()的getTime()? 在Java中,使用的性能和资源含义是什么? System.currentTimeMillis() 与 new Date() 与 Calendar.getInstance().getTime() 据我了解,System.currentTimeMillis()是最有效的。但是,在大多数应用程序中,该长值需要转换为Date或某个类似的对象才能对人类有意义。

13
何时使用Vanilla JavaScript与jQuery?
我注意到在监视/尝试回答常见的jQuery问题时,有一些使用javascript而不是jQuery的实践实际上使您可以编写更少的代码并且做得 ...相当。并且还可能产生性能优势。 一个具体的例子 $(this) 与 this 在点击事件中引用点击的对象ID jQuery的 $(this).attr("id"); Java脚本 this.id; 还有其他类似的常规做法吗?无需将jQuery混用就可以更轻松地完成某些Javascript操作的地方。还是这是罕见的情况?(实际上是需要更多代码的jQuery“快捷方式”) 编辑:虽然我很欣赏有关jQuery与普通javascript性能的答案,但实际上我正在寻找更多定量的答案。 使用jQuery时,使用普通javascript而不是使用javascript可能会更好(可读性/紧凑性)的实例$()。除了我在原始问题中给出的示例。


1
启用C ++ 11时std :: vector性能回归
当启用C ++ 11时,我在一个小的C ++代码段中发现了有趣的性能下降: #include <vector> struct Item { int a; int b; }; int main() { const std::size_t num_items = 10000000; std::vector<Item> container; container.reserve(num_items); for (std::size_t i = 0; i < num_items; ++i) { container.push_back(Item()); } return 0; } 使用g ++(GCC)4.8.2 20131219(预发行版)和C ++ 03,我得到: milian:/tmp$ g++ -O3 main.cpp && …
235 c++  performance  gcc  c++11  vector 

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.