浅谈我对开发效率与执行性能的抉择

要说这个,就不得不说说我对性能的强迫症,这得从十几年前说起

回首往事

十几年前,因为我爸妈有看股票的需求,买了一台电脑。我记得当时的电脑主机还是卧式的,一般用来垫显示器。最早的系统是98还是2000早已不记得了。在同龄人中我家有电脑是比较早的了

后来我才逐渐变得会玩电脑了,那时候中国互联网乱得不行,开机弹十几个广告窗口那是家常便饭。那时硬件极贵,虽然我家有电脑比较早,但本着够用就行的原则,升级速度远远赶不上硬件发展速度。再加上我玩的游戏也越来越大,电脑吃力得不行。为了更流畅地玩游戏,我刻苦学习Windows优化知识,杀毒、清插件、改注册表之类不在话下。事实证明,各种优化措施的确是有一定效果的

也就是从那时开始,我对性能出现了严重的强迫症,甚至于直到现在,我桌面上的图标也不会超过5个。这强迫症影响了我从软、硬件的选择乃至于编程的倾向风格。我的眼中容不下一丝不必要的性能浪费,更愿意面向过程

一切的开始

因为工作的关系,主流PHP框架中用得最多、最熟的还是轻量级的Codeigniter框架。但对于一些外包小项目来说还是比较臃肿的,再加上用着不够顺手,我便产生了自己开发框架的想法。经历N次的迭代更新和实际项目后,更轻量、更好用(至少对我来说)的PHP框架——RemiliaPHP诞生了(文档还没写完,暂不公开)

前阵子跟一位小伙伴整了个开源项目,因为规模不大,所以后端用的就是我这蕾米莉亚PHP框架。彼此分好工定了个大致的时间后就开始了

毕竟是自己写的框架,用起来就是无比顺手。但项目中还有不少大同小异的功能,不得不四处拷贝代码再进行修改,再加上一些数据库操作等等,看似原本不大的项目,在业余时间写起来也很是吃力。最终没能按时完成任务

开源项目嘛,拖一拖没什么。但我回过头来一看,我用这N天的业余时间换来的是什么?一个充斥着乱七八糟面向过程代码的项目。客观来说这个项目不算难,我的这个代码效率也高,但可维护性差。总结下来我的时间都浪费在写前端以及复制粘贴改改改上了

性能与效率的抉择

其实我对类似YII这样的重型框架也略有了解,看过视频,也听过小伙伴的安利。我也的确羡慕这类重型框架上手后极高的开发效率。不过出于我对性能的强迫症,我从来没有选择过它们

回到这次项目,抛开这前端不谈,太久没写要写起来真心吃力。我用拷贝的方式换来了较高的性能、较长的开发时间和较差的可维护性。是的,我的强迫症导致我大部分时候都是这么干的,面向过程相比面向对象一般更节约性能和内存

但这次紧张的开发告一段落后,我突然对我一贯认为正确的强迫症起了疑——

我牺牲了那么多换来的这些性能提升到底有多少?真的值得吗?

我一如既往地蹲在马桶上思考着人生和这个问题。如今的计算机性能翻倍着往上涨,已经正式发布的PHP7性能又翻了3倍。我不禁开始质疑自己,这放任了十几年的强迫症,真的还应该保留吗?我为了性能牺牲的开发效率和可维护性真的值得吗?

我为什么要为可以恢复的“性能”,浪费我不能恢复的“生命”呢?

性能可以提升、可以恢复,但我的人生却只能一去不复返了啊!

我如醍醐灌顶般猛然醒悟过来,这才发现自己一直以来的做法有多么的愚蠢。我感觉我说了一句很有道理但自己却一直都没有明白的话

未来的开始

想通之后,我就特别心疼我这阵子浪费的业余时间,我根本没有必要为了这点性能提升牺牲这么多无法恢复的东西啊!

我决定开始努力克服我这该死的强迫症,避免重复造轮子

而且准备要认真学习YII框架了,相比于不停拷贝代码,我更宁愿进行一些配置后让它自行生成,牺牲一些性能换取更快的开发效率和更好的可维护性。毕竟生命只有一次,得好好珍惜啊

那么,各位小伙伴,对于YII有什么建议或好的学习方法吗?求指教。共勉!

18 条评论

昵称
  1. 殷涛

    请问博主,自学php有没有什么好的网站或书

    1. mokeyjay

      慕课网

  2. Corps

    果然果然,我认为我可以写又臭又长效率极低的代码了w~

    1. mokeyjay

      此话怎讲?

  3. KEN

    果然,一模一样的情况发生在了我身上。我也要好好为自己考虑一下了。[生病]

    1. mokeyjay

      打基础写原生,稍微大点的项目直接上重型框架吧

  4. 霜酱

    问个问题啊,为啥我用了CloudXNS CDN之后各种js文件还是从我的服务器加载的

    1. mokeyjay

      你开那个加速服务了吗?如果你是刚打开的话,需要等一阵子DNS生效后才行,最长需要48小时

      1. 霜酱

        开了啊,我都开一两个星期了,还是不行。。。

        1. mokeyjay

          你问他们客服吧

  5. 放肆

    推荐给乃一个框架:symfony 几个月前曾经用它开发过一个sso 给我的感受:十分的方便 许多的功能可以用cli来配置 例如数据库 在文件中修改以后 直接用cli自动建表 而且自带一个性能的图形化 缺点就是 安装比较麻烦 国内没有较大的开发者社区

    1. mokeyjay

      过几天有空简单学习然后对比一下各大重型框架再决定学哪个