zoukankan      html  css  js  c++  java
  • 代码优化的一些尝试

    1.循环体

    下面程序的两段循环体中的差别仅在于是否使用了局部变量来减少一次加法运算

    func main() {
    	buf := make([]byte, 100000000)
    	var offset int
    	var sum int
    
    	//不使用局部变量,多一次加法运算
    	t3 := time.Now()
    	offset = 0
    	sum = 0
    	for i := 0; i < len(buf); i++ {
    		sum += int(buf[offset+i])
    		sum += int(buf[offset+i])
    	}
    	t4 := time.Now().Sub(t3)
    	fmt.Println(t4)
    
    	//使用局部变量
    	/*t1 := time.Now()
    	offset = 0
    	sum = 0
    	for i := 0; i < len(buf); i++ {
    		temp := offset + i
    		sum += int(buf[temp])
    		sum += int(buf[temp])
    	}
    	t2 := time.Now().Sub(t1)
    	fmt.Println(t2)*/
    
    	return
    }
    

    多次运行的结果:第一段(未使用局部变量)总要比第二段慢7%左右。实验中的循环次数一定要足够大(10^8以上),否则结果不定

                      结论:在循环次数很大的情况下,通过局部变量能减少一定运行时间。

    2.类型转换对运行时间的影响

    两段测试程序的唯一区别为是否进行了类型转换

    结果:两者的运行时间基本一致

    结论:类型转换对程序运行影响甚微。

      

      

  • 相关阅读:
    C#处理json实战
    HDU3994(Folyd + 期望概率)
    POJ1270 Following Orders (拓扑排序)
    HDU 3634 City Planning (离散化)
    HDU4762(JAVA大数)
    POJ3026(BFS + prim)
    POJ1679(次小生成树)
    UVA10487(二分)
    ZOJ 2048(Prim 或者 Kruskal)
    FZU 1856 The Troop (JAVA高精度)
  • 原文地址:https://www.cnblogs.com/xiaopipi/p/4983830.html
Copyright © 2011-2022 走看看