打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
google面试题解说性能优化
google面试题解说性能优化-专栏全部文章
介绍: google面试题解说性能优化
文章:9
专栏维护者
cherami
Google面试题解说性能之六:数学显神威
其实很多问题一旦涉及到数学问题或者数据处理密集型问题,那么最终显现神威的就是数学公式,这个面试题也是这类问题,所以如果我们能够推导出一个数学公式就是最理想的,在前面的例子中,我们进行了一些深入的分析,根据前面的例子,你可能会尝试把步长从100扩展到1000或者10000,但是实际上这个方法遇到了瓶颈,因为循环嵌套的层次太多,计算公式太复杂也会导致问题。如果我们最开始尝试的时候把全部的f(n)的结果打印出来,你会发现这样的内容:f(9) = 1f(99) = 20f(999) = 300f(999 ...
bycherami  2007-04-09   浏览 (241)  回复 (0)  关键字:
Google面试题解说性能之七:缓存中间结果
上次已经说了fn的实现不能用来查找符合条件的n,因为这样做比前面的第一个例子中的性能比较差的那个还要差,原因就是有太多的重复计算,如果只是计算一个指定的数的结果,那么那个实现是无与匹敌的。但是我们是讲的性能优化,所以,我们就用它来做,放慢速度,然后使用其它的技巧来提高性能,这次的方法就是简单的使用缓存:public class GoogleFn {    private static final int MAX = 2600002;    ...
bycherami  2007-04-09   浏览 (265)  回复 (0)  关键字:
Google面试题解说性能之八:工欲善其事必先利其器
按照原先的计划,这个系列只应该有四篇,但是后来打算多写一些,把这个问题研究透彻,所以出现了总结篇先于其它篇的情况。这次我们按照总结篇中提到的方法实际演示下代码覆盖工具如何帮助我们优化程序提高性能,先给出我们未经好好优化的程序:package com.jiehoo.util;public class GoogleFn {    private static final int MAX = 2600002;    private stati ...
bycherami  2007-04-09   浏览 (294)  回复 (0)  关键字:
Google面试题解说性能之五:人比电脑聪明
在例子四的基础上,我们可以进行更加深入的分析,我们还是以100为例,我们其实在大部分情况下可以省略循环,如果数字的百位数以上包含1的个数为0,而十位数不为1,那么当个位数大于1以后,我们可以中断底层的循环,这样我们又节省了很多的运算:public class GoogleFn {  private static int MAX = 1320000000;  private static int MAX2 = MAX / 10;  private static int ...
bycherami  2007-04-07   浏览 (261)  回复 (1)  关键字:
Google面试题解说性能之一:字符串运算VS数字运算
看到JavaEye上的几个人在讨论算法问题,其中一个就是Google的一个面试题,我也试了一下,而且可能比一般人试得程度更深一些,借这个题目简单的说说几个性能问题。这个是第一个,后面还会继续几个其它的讨论。讨论只是提点一下,主要还是要你自己读源代码并比较不同的实现为什么会有这么大的差别。注意,程序的运行结果是在JDK1.4.2上的,其它版本的JDK的运行结果可能稍有不同。先看代码:public class GoogleFn {    private static i ...
bycherami  2007-04-06   浏览 (542)  回复 (0)  关键字:
Google面试题解说性能之二:分析问题
前面我们已经说了字符串运算和数学运算对性能的巨大影响,接下来我们看看分析程序,多思考给我们带来的好处。如果我们做一个简单的分析就可以知道,在尾数从0到9的连续十个数字中,只有尾数为1的数字的1的个数比其它的数字多,那么我们可以以10个数为单位进行分隔,计算尾数为0的数字包含1的个数,其它的9个值就以此为基础计算:public class GoogleFn {    private static int MAX = 13200000;    ...
bycherami  2007-04-06   浏览 (274)  回复 (0)  关键字:
Google面试题解说性能之三:不要小看循环中的任何一个语句
对于任何语言来讲,循环永远是非分布式系统的性能的最大杀手,循环中的任何一个简单的语句对性能都是有影响的,只是影响的大小不同而已。第一个例子中的影响是比较大的,不同的实现方法的时间开销不同,然后这个微小的差异被循环次数放大后就非常的明显(3倍),而第二个例子,其本质是减少了循环执行的次数,虽然总的循环次数是一样的,但是最耗时的操作的执行次数被减少到1/10,所以产生的差异是非常巨大的(8倍)。我们再来看一个很不起眼的微小差异带来的影响:public class GoogleFn { &n ...
bycherami  2007-04-06   浏览 (279)  回复 (0)  关键字:
Google面试题解说性能之四:优化无止境
其实在例子二的基础上,我们进一步的分析,可以把缓存10个结果换成缓存100个结果,性能可以得到进一步提升:public class GoogleFn {  private static int MAX = 13200000;  private static int MAX2 = MAX / 10;  private static int MAX3 = MAX2 / 10;  private static int count(int n) { &n ...
bycherami  2007-04-06   浏览 (217)  回复 (0)  关键字:
Google面试题解说性能之总结
呵呵,说了这么多,到底怎么优化性能还是没有说多少,而且一个产品的代码比这个例子复杂得多,怎么才能优化产品代码呢?很简单,找到性能瓶颈,而大部分的性能瓶颈都有一个特点:被执行的次数太多。一个耗时2分钟的操作,如果系统运行一天才需要运行一次,那么我们根本就不要去理会它,如果一个操作耗时2秒,但是一般运行一天它要被执行几千亿次,那么你就要小心了。如何才能知道系统中的哪些代码被执行的次数最多呢?有很多工具可以,有的是挂到系统上一起运行,有的是可以单独运行,但是我推荐的方法就是使用单元测试工具和代码覆盖工 ...
bycherami  2007-04-06   浏览 (319)  回复 (0)  关键字:
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
1010一造技术与计量-知识点10建筑结构材料(一)
锂电池循环寿命只有500次?不,你错了…
GH3044
残留水对冷拌料抗水损害性能的影响
金属的断裂韧度及疲劳强度
关于锂电池的使用和保养
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服