具体来说,如果我有一系列if … else if语句,而且事先知道每个语句的相对概率都是true ,那么它在执行时间上有多大的区别呢? 例如,我应该喜欢这个: if (highly_likely) //do something else if (somewhat_likely) //do something else if (unlikely) //do something 这个? if (unlikely) //do something else if (somewhat_likely) //do something else if (highly_likely) //do something 看起来很明显,sorting的版本会更快,但是为了可读性或副作用的存在,我们可能想要对它们进行非最优sorting。 在实际运行代码之前,也很难判断CPU如何处理分支预测。 所以在试验过程中,我最终回答了自己的一个具体案例的问题,但是我也希望听到其他意见/见解。 重要的是:这个问题假设if语句可以被任意地重新sorting而不会对程序的行为产生任何其他影响。 在我的回答中,三个条件testing是相互排斥的,不会产生副作用。 当然,如果这些陈述必须以一定的顺序进行评估以达到一些理想的行为,那么效率问题就没有意义了。
我做了一个叫做QuickRandom的类,它的工作就是快速生成随机数。 这非常简单:只取旧的值,乘以一个double ,取小数部分。 这是我的QuickRandom类的完整: public class QuickRandom { private double prevNum; private double magicNumber; public QuickRandom(double seed1, double seed2) { if (seed1 >= 1 || seed1 < 0) throw new IllegalArgumentException("Seed 1 must be >= 0 and < 1, not " + seed1); prevNum = seed1; if (seed2 <= 1 || seed2 > 10) throw […]
最近几个星期,我在memcached上工作了很多,刚刚发现了Redis。 当我阅读这部分自述文件时,突然在我的肚子里感到一种温暖而舒适的感觉: Redis可以用作类固醇上的memcached,因为它和memcached一样快,但是有更多的function。 像memcached一样,Redis也支持设置超时键,以便在给定的时间内,这个键会被自动删除。 这听起来很神奇。 我也发现这个网页的基准: http : //www.ruturaj.net/redis-memcached-tokyo-tyrant-mysql-comparison 所以,诚实地说,memcache真的是那个古老的dinousaur,从性能angular度来说这是一个糟糕的select,而这个名为Redis的新手呢? 以前我没有听说Redis,所以我的问题的方法!
问题A部分 ▉(100奖励,颁发) 主要问题是如何使这个网站,加载速度更快。 首先,我们需要阅读这些瀑布。 感谢所有关于瀑布读数分析的build议。 从这里显示的各种瀑布图显示的主要瓶颈是:PHP生成的缩略图。 从大卫build议的CDN的无协议jquery加载得到我的赏金,虽然使我的网站整体速度只有3%,而没有回答该网站的主要瓶颈。 是时候澄清我的问题了,另一个赏金: 问题B部分 ▉(100奖励,颁发) 现在新的重点是解决6 jpg图像的问题,这是造成大部分加载延迟的问题。 这6张图片是PHP生成的缩略图,很小,只有3〜5kb,但是加载速度相对很慢。 注意各个图表上的“ 第一个字节的时间 ”。 问题仍然没有得到解决,但一个赏金去了詹姆斯,他修复了RedBot 强调的头错误: “如果修改,因为有条件的请求返回完整的内容不变。 。 问题C部分 ▉(我最后的赏金:250分) 不幸的是,甚至在修复了REdbot.org头部错误之后,由PHP生成的图像所引起的延迟仍未改变。 这些小小的3〜5Kb缩略图究竟在想些什么? 所有的头文件信息可以发送火箭到月球和背部。 任何关于这个瓶颈的build议都是值得赞赏的,并被视为可能的答案,因为我已经在这个七个月的瓶颈问题上陷入了困境。 我提前感谢。 [我的网站上的一些背景信息:CSS位于顶部。 JS的底部(JQuery的,JQuery的UI,购买了菜单awm / menu.js引擎,标签JS引擎,videoswfobject.js)第二个图像上的黑线显示什么是什么启动加载。 愤怒的机器人是我的宠物“ZAM”。 他是无害的,往往更快乐。] 加载瀑布:按时间顺序 | http://webpagetest.org 并行域分组 | http://webpagetest.org Site-Perf瀑布 | http://site-perf.com Pingdom工具瀑布 | http://tools.pingdom.com GTmetrix瀑布 | http://gtmetrix.com
还是现在呢? 据我所知,有一些C#certificate比C ++更快的领域,但是我从来没有胆量去亲自testing。 以为你们中的任何一个都可以详细解释这些差异,或者指出我对这方面信息的正确位置。
Java有一定的缓慢的声誉 。 Java真的很慢吗? 如果是,为什么? 瓶颈在哪里? 是因为效率低下的JVM吗? 垃圾收集? 纯字节码库而不是JNI包装的C代码? 许多其他语言具有这些function,但他们没有这种缓慢的声誉。
我用了一个有很多数据的variables,比如String data 。 我想用下面的方式使用这个string的一小部分: this.smallpart = data.substring(12,18); 经过几个小时的debugging(使用内存可视化工具)后,我发现objects field smallpart记住了所有来自data ,虽然它只包含子string。 当我把代码改成: this.smallpart = data.substring(12,18)+""; 问题解决了! 现在我的应用程序现在使用很less的内存! 这怎么可能? 任何人都可以解释吗? 我认为this.smallpart一直参考数据,但为什么呢? 更新:我怎样才能清除大string呢? 将数据=新的string(data.substring(0,100))做的事情?
有时声称,即使仅仅编译C ++ 98代码,C ++ 11/14也可以提高性能。 理由通常是沿着移动语义的线,因为在某些情况下,右值构造函数是自动生成的或现在是STL的一部分。 现在我想知道这些情况以前是否已经由RVO或类似的编译器优化处理过。 我的问题是,如果你能给我一个C ++ 98代码的实例,不加修改,使用支持新语言function的编译器运行得更快。 我明白一个标准的编译器不需要做copy copy,因此移动语义可能会带来速度,但是如果你愿意的话,我希望看到一个较less的病态的情况。 编辑:只是要清楚,我不问新的编译器是否比旧的编译器更快,而是如果有代码,将-std = c ++ 14添加到我的编译器标志将会运行得更快(避免副本,但如果你除了移动语义之外还能想出其他的东西,我也会感兴趣的)
我们开始在我们的项目中更多地使用GWT,GWT编译器的性能变得越来越令人讨厌。 我们将开始改变我们的工作实践,以缓解这个问题,包括更加重视托pipe模式浏览器,这种浏览器推迟到稍后才运行GWT编译器,但这会带来自身的风险,尤其是没有捕捉真正的浏览器问题,直到比我们想要的晚得多。 理想情况下,我们希望让GWT编译器本身更快 – 编写一个相当小的应用程序的一分钟就是不必要的。 但是,如果我们使用相当天真的方式进行编译,那么我希望我们能够取得一些快速和轻松的成果。 我们目前正在调用com.google.gwt.dev.Compiler作为一个来自Ant Ant目标的Java应用程序,最大的堆是256m,堆栈空间很大。 编译器由Ant使用fork = true和最新的Java 6 JRE启动,试图利用Java6的改进性能。 我们将主控制器类与应用程序类path一起传递给编译器,然后closures它。 我们还能做些什么来获得额外的速度? 我们可以给它更多的信息,所以它花费更less的时间来发现做什么? 我知道我们可以告诉它只为一个浏览器编译,但我们需要做多浏览器testing,所以这不是很实际。 所有的build议欢迎在这一点上。
查询运行速度很快: DECLARE @SessionGUID uniqueidentifier SET @SessionGUID = 'BCBA333C-B6A1-4155-9833-C495F22EA908' SELECT * FROM Report_Opener WHERE SessionGUID = @SessionGUID ORDER BY CurrencyTypeOrder, Rank 子树成本:0.502 但是,在存储过程中放入相同的SQL运行速度很慢,并且执行计划完全不同 CREATE PROCEDURE dbo.ViewOpener @SessionGUID uniqueidentifier AS SELECT * FROM Report_Opener WHERE SessionGUID = @SessionGUID ORDER BY CurrencyTypeOrder, Rank EXECUTE ViewOpener @SessionGUID 子树成本:19.2 我跑了 sp_recompile ViewOpener 它仍然运行相同(严重),我也改变了存储过程 CREATE PROCEDURE dbo.ViewOpener @SessionGUID uniqueidentifier AS SELECT […]