当前访客身份:游客 [ 登录 | 加入 OSCHINA ]

代码分享

当前位置:
代码分享 » PHP  » Web编程
分享到: 
收藏 +0
2
WEB项目优化之基点:代码优化;
优化技术手段:
1、选择正确的、高效的循环方案;
2、减小额外循化与多余运算。

欲知更多算法与优化技术敬请定期翻阅:开源博客EQPHP-Blog(算法、优化)
标签: EQPHP

代码片段(1) [全屏查看所有代码]

1. [代码][PHP]代码     跳至 [1] [全屏预览]

<?php

class a_test{

    private $static_class;

    static function index(){

        $data=range(0,100000);

        $begin=debug::set_flag(); //开启debug调试点

        $odd=self::optimization($data,true);

        $end=debug::set_flag(); //结束debug调试点
        out(debug::used($begin,$end),1,1);

        // [origin]
        // [0] => 0.101s
        // [1] => 20801.063kb
        // [2] => 91326.813kb

        // [optimization]
        // [0] => 0.086s
        // [1] => 20800.875kb
        // [2] => 132924.938kb
    }


    //原始算法
    static function origin($data,$is_odd=false){

        $result=null;
        for ($i=0; $i < count($data); ++$i) {
            if ($data[$i]%2 == 0) {
                if (!$is_odd) {
                    $result[]=$data[$i];
                }
            } else {
                if ($is_odd) {
                    $result[]=$data[$i];
                }
            }
        }

        return $result;
    }


    //优化算法
    static function optimization($data,$is_odd=false){

        $odd=$even=null;
        $num=count($data);

        for ($i=0; $i < $num; ++$i) {
            if ($data[$i]%2 == 0) {
                $even[]=$data[$i];
            } else {
                $odd[]=$data[$i];
            }
        }

        return $is_odd ? $odd : $even;
    }


    //最佳算法
    static function best($data,$is_odd=false){
        //TODO 期待你的最佳算法
    }


}


开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(4)

  • 1楼:酒逍遥 发表于 2014-04-09 14:41 回复此评论
    static function best($data,$is_odd=false){
            foreach($data as $v) $d[$v%2][]=$v;
            return $d[$is_odd];
    }
    两行就搞定了吧 ..... 
  • 2楼:art_youth 发表于 2014-04-11 07:44 回复此评论

    引用来自“酒逍遥”的评论

    static function best($data,$is_odd=false){
            foreach($data as $v) $d[$v%2][]=$v;
            return $d[$is_odd];
    }
    两行就搞定了吧 ..... 

    赞:巧用取模方法,秒哉、高哉! notice: 1、优化的含义不是减少代码,不过减少代码确实可以减少“阅读压力”。 2、如果$data不是数组,后果你知道…… 3、传说中的foreach比for快,有些时候并不一定; 4、不提倡省去{}; 5、$d的命名不赞成。

  • 3楼:letwang 发表于 2014-05-12 10:31 回复此评论

    引用来自“酒逍遥”的评论

    static function best($data,$is_odd=false){
            foreach($data as $v) $d[$v%2][]=$v;
            return $d[$is_odd];
    }
    两行就搞定了吧 ..... 

    引用来自“art_youth-web”的评论

    赞:巧用取模方法,秒哉、高哉! notice: 1、优化的含义不是减少代码,不过减少代码确实可以减少“阅读压力”。 2、如果$data不是数组,后果你知道…… 3、传说中的foreach比for快,有些时候并不一定; 4、不提倡省去{}; 5、$d的命名不赞成。

    我给他打99分
  • 4楼:学习才是未来 发表于 2014-05-12 11:34 回复此评论
    foreach需要强制类型转换(array),foreach做遍历操作速度是很快的,赋值操作效率不高,而且赋值操作,需要赋值的变量比如$b需要预处理。。。。。。。。我是初学者。。。说错了求大神指导(┬_┬)
开源从代码分享开始 分享代码