`
hatedance
  • 浏览: 59551 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

关于开发效率和性能的选择

阅读更多
开发效率和性能总是死敌。
一个技术,基本上要么开发效率低下但性能超好,或者开发效率提高但性能下降了。
je上最近的2个帖子,其实都是在讨论一个问题,到底是性能优先还是易用性优先。(rpc or norpc,hibernate or jdbc)
我看到很多人都选择性能优先。
其实这个问题很简单,选择性能优先的选择norpc,jdbc,甚至存储过程。
倾向开发效率的人往往选择rpc,hibernate。
同类的选择还有stateless or stateful.spring的作者rod johnson一开始也曾鄙视stateful ejb,理由是性能太差。不过后来他也承认stateful ejb有其合适的用途。

另外一个类似的例子是web层的状态管理。如今的大多数基于jsp的mvc都是无状态的。但hibernate的作者却提出要让web层有状态。他搞了web beans规范,推出了seam产品。
显然,seam的一个目的就是通过新增的状态管理,简化web的开发。然而,同时他也指出,seam适合小型的相对简单的项目。

我的结论就是,每种技术都是双刃剑,作为程序员,尤其是架构师,要根据情况,选择合适的技术。不能简单的说那种技术好还是不好,而是得有上下文。
不能盲目的追求性能,
舍弃hibernate,舍弃stateful session bean,舍弃web service,
而选择jdbc, 存储过程,stateless session bean, socket.

对于性能,在满足需求的前提下,就应该追逐开发效率。否则你连java也不要用了,直接写汇编去吧。
不见得每一个系统都有庞大的用户群。我相信绝大多数的系统都是中小型的系统,绝对有理由牺牲部分多余的性能换来开发的简化。
更何况就算是一个庞大的系统,正因为其庞大,也不必只选择单一的技术。比如客户访问的模块因为人多,考虑性能而选择jdbc。
但管理模块则考虑整个系统就几个管理员使用,可以选择hibernate。
分享到:
评论
21 楼 andot 2010-04-13  
mathgl 写道
andot 写道
舍弃norpc,选择rpc,不见得性能就会低下,要看你选的rpc是什么方案,如果选择webservice,那肯定是性能低下的。如果选择hprose,性能反而会提升,开发效率也会大大提升。

你的hprose有没有试用版??


有啊。
20 楼 mathgl 2010-04-13  
andot 写道
舍弃norpc,选择rpc,不见得性能就会低下,要看你选的rpc是什么方案,如果选择webservice,那肯定是性能低下的。如果选择hprose,性能反而会提升,开发效率也会大大提升。

你的hprose有没有试用版??
19 楼 LucasLee 2010-04-11  
这两者是矛盾的,但并非不可调和。

比如,某种情况下,性能损失5%,开发效率提升50%,你如何选择?
这个问题的答案也不一定的。关键是客户认为这性能的5%是否有明显感觉、或者在得到更快的版本升级更低的成本时是否愿意放弃者5%。

所以,归根结底,这个问题的性能和开发效率,是要看具体项目产品、客户而定的。
泛泛说哪个更重要是没有意义的。
18 楼 hyee 2010-04-11  
注重效率还是注重性能,和模块的调用频率有关,对于调用频率很高的模块,性能优先,否则可以趋向于效率优先。
17 楼 andot 2010-04-10  
选型是很重要,但不见得选型的时候就鱼与熊掌不可兼得。
就比如远程调用吧,如果选择WebService,不但性能低下累坏计算机,同时也难以使用累坏程序员。而如果选择Hprose,不但性能上高出WebService百倍,同时也会让程序员用起来很轻松。但是就是有很多人宁愿选择性能低下的WebService不说,还要滥用本来就性能低下的WebService,使之性能更低,使用更麻烦。能够做出这种愚蠢选择的人实在是很悲哀。
16 楼 hatedance 2010-04-10  
pufan 写道
hatedance 写道
开发效率和性能总是死敌。

明明是朋友关系吗,怎么会成为死敌?

开发效率主要取决于代码的复用程度(开发工具、语言差异等是次要因素)

性能则主要取决于代码的好坏优劣(语言效率、cpu的运算能力、网络磁盘IO等是次要因素)

以个人的经验看,往往越简单的设计代码质量则越高,越高质量的代码其复用程度也越高。。。


ps:居然还有这么多投隐的,bs之

我说的是技术选型,不是说代码的质量高低。
一般越是方便程序员的技术,就会同时累坏计算机。而为了调优性能,往往累坏程序员。
比如ORM屏蔽了底层数据库细节和差异,但总体上写出来的程序性能比jdbc的差。
我看到很多时候,大家想也不想就选用某种技术,其实是不好的。
很多人根据自己的喜好,一切项目都用某种技术,而实际上应该根据项目的情况来选用才是合理的。
包括我自己,过去那么多项目,我都选用SSH。其实java平台上那么多组合可以选,不见得每次都是SSH最合理。
我的看法是在这些权衡上,尽量让计算机辛苦一些,让人轻松一些。

还有人提出程序员只有能写出高性能的程序,才是有钱途的。此话不假。但只适用于追求性能的场合。我前面说了,绝大部分系统都是中小型的系统。
15 楼 pufan 2010-04-10  
hatedance 写道
开发效率和性能总是死敌。

明明是朋友关系吗,怎么会成为死敌?

开发效率主要取决于代码的复用程度(开发工具、语言差异等是次要因素)

性能则主要取决于代码的好坏优劣(语言效率、cpu的运算能力、网络磁盘IO等是次要因素)

以个人的经验看,往往越简单的设计代码质量则越高,越高质量的代码其复用程度也越高。。。


ps:居然还有这么多投隐的,bs之
14 楼 ppgunjack 2010-04-10  
在性能至上的项目,性能必须一开始就考虑,等跑应用发现效率问题再调性能,调整空间已经不会太大
web,分布式开发java有无可比拟的优势,确实开发移植比c++简单太多
至于追求性能还是效率可以从另一个角度考虑:
作为打工仔,软件性能永远和你的价值成正比,而框架带来的效率和你价值成反比。
当框架帮你解决了大部分开发重担,最好还是赶紧学点性能手段作为一技傍身吧
13 楼 ft28143 2010-04-09  
开发效率 = 多用现成的少走弯路。

性能 = 维护优化。

12 楼 hwn0412 2010-04-09  
性能和开发效率同样重要..  
11 楼 aoliwen521 2010-04-09  
我认为开发效率的提升有点很多。
不单单是开发速度快,未来的维护升级和扩展也相对容易的多。
而且应该能更好的适应需求的突然变更。
10 楼 lzmhehe 2010-04-09  
有多少情况会关注性能啊,尤其很多项目都是靠刚毕业的人堆出来的,能按时做出来东西就不错了。
9 楼 mp_juan 2010-04-09  
性能可以在很多地方进行优化,但是效率却是另外一个层面的问题了,可能一个项目组的boss会很在意效率问题,至于性能问题,是需要在应用中发现了性能问题之后,才进行优化的
8 楼 gdpglc 2010-04-09  
我问一下,大家有没有用过ejb的,这东西在性能上应该没什么优势,为什么sun现在的oracle还在发展它?现在有什么大型的东西是用ejb搞出来的吗?
7 楼 抛出异常的爱 2010-04-09  
选则开发效率+集群
证明了公司对开发人员价值的肯定
要是程序员工作没几个钱。。。。
6 楼 andot 2010-04-09  
舍弃norpc,选择rpc,不见得性能就会低下,要看你选的rpc是什么方案,如果选择webservice,那肯定是性能低下的。如果选择hprose,性能反而会提升,开发效率也会大大提升。
5 楼 rocwon 2010-04-08  
一个技术,基本上要么开发效率低下但性能超好,或者开发效率提高但性能下降了。

-----
这话是什么逻辑。。。
4 楼 chemzqm 2010-04-08  
没有最好的,只有最合适的
3 楼 vampire423 2010-04-08  
赞同楼主的意见,除非需求调研中客户极大的关注性能问题,否则应该是开发效率第一。

至少在目前大部分J2EE项目中,性能问题还不是首要考虑的因素。
2 楼 treblesoftware 2010-04-08  
MVC也可以有状态。性能好坏不取决于你选择的技术框架或者类包。性能更倾向于你系统的压力与你系统的设计。用ORM不代表性能就比JDBC差。

相关推荐

    eclipse开发性能优化、java代码性能优化

    通过上述介绍的 Eclipse 开发环境和 Java 代码级别的性能优化措施,开发者可以在很大程度上提升开发效率和应用性能。需要注意的是,性能优化是一个持续的过程,随着技术的发展和业务需求的变化,优化策略也需要不断...

    List.removeAll() 方法的性能效率

    总之,理解`List.removeAll()`的性能特性及其背后的实现原理,可以帮助我们在实际编程中做出明智的选择,优化代码性能,提高程序运行效率。在处理大规模数据时,合理的数据结构和算法选择将显得尤为重要。

    后端开发框架探索与选择

    通过了解不同框架的特点和优势,并结合项目需求和个人偏好进行选择,可以大大提高开发效率和系统性能。同时,保持对新技术和新框架的关注和学习也是非常重要的。希望本文能帮助读者在后端开发框架的选择上做出明智的...

    PyCharm插件安装指南:提升开发效率的秘诀

    记住,选择和使用插件时要考虑其维护状态、功能适配和性能影响,以确保获得最佳的开发环境。 本文详细介绍了PyCharm插件的安装和管理过程,从基本概念到具体步骤,再到最佳实践和高级技巧,为读者提供了全面的指导...

    sql性能分析工具效率分析

    5. **报表和可视化**:生成性能报告和图表,使问题一目了然,方便决策者和开发人员进行问题定位。 6. **调优建议**:根据数据库的特性和查询模式,自动或手动提供优化建议,例如创建合适的索引、优化查询语句等。 ...

    提高 Android UI 开发效率的 UI 库

    为了提高开发效率,许多开发者会使用UI库,这些库提供了丰富的组件、样式和工具,帮助开发者快速构建美观且功能齐全的用户界面。本文将详细讲解如何利用名为QMUI_Android的UI库来提升Android UI开发的效率。 QMUI_...

    C++ json库性能对比

    总结来说,C++中的JSON库选择应该基于项目的具体需求,如性能、内存效率、易用性、兼容性和社区支持等因素。对于性能敏感的应用,如网络服务或大数据处理,像rapidjson这样的高性能库可能是首选;而对于那些对代码...

    从运行效率与开发效率比较Python和C++

    ### 从运行效率与开发效率比较Python和C++ 在当今软件开发领域,选择合适的编程语言对于项目的成功至关重要。Python和C++作为两种广泛使用的编程语言,各有其独特的优势和应用场景。本文将深入探讨这两种语言在运行...

    高性能PHP应用开发pdf

    6. **PHP框架与性能**:分析常见PHP框架(如Laravel, Symfony)在性能优化上的特点和策略,如何选择合适的框架,以及如何对其进行定制以提高性能。 7. **Web服务器与PHP集成**:讲解如何配置Nginx、Apache等Web...

    loadrunner性能测试模板和性能测试计划模板

    在IT行业中,性能测试是确保软件系统在高负载和大用户量情况下稳定运行的关键环节。LoadRunner是一款由...对于任何涉及LoadRunner性能测试的项目来说,这些文档都是不可或缺的参考资料,有助于提升测试效率和质量。

    linux性能调优.pdf

    Linux性能调优是系统管理员和开发人员优化Linux系统性能的重要技能。它涉及对系统资源和应用程序的分析、监控、和调整,以实现更高的效率和响应速度。本篇学习笔记详细介绍了性能分析的步骤、优化工具、性能指标的...

    选择性注意力提升Transformer性能与效率

    The paper introduces Selective Attention, a ...研究表明选择性注意力能够使Transformer模型根据不同任务动态调整记忆量,在减少无关输入的同时提升性能和计算效率,尤其是在大规模语料训练过程中展现出巨大优势。

    如何在C++中实现代码性能分析工具集

    通过选择合适的工具、编写分析代码、集成到构建系统和CI/CD流程,可以自动化性能分析过程,提高开发效率和软件质量。 在C/C++开发中,代码性能分析是一个关键步骤,它可以帮助开发者识别性能瓶颈并进行优化。为了...

    利用GWT开发高性能Ajax应用

    GWT集成了如Eclipse这样的Java开发环境,允许开发者使用强大的IDE进行Ajax应用的调试和开发,提升了开发效率。 5. **优化策略**: 除了编译器优化,GWT还提供了一些最佳实践,例如模块化设计,使得开发者可以按需...

    MySQL 前端交互式工具,提升开发效率!

    在这个标题为“MySQL 前端交互式工具,提升开发效率!”的话题中,我们将深入探讨这类工具的重要性和特点。 首先,MySQL 是一个广泛使用的开源关系型数据库管理系统,它在Web应用、数据存储和分析等领域有着广泛的...

    DataGrip:数据库管理利器,提升开发效率新选择.zip

    通过充分利用其智能代码编辑、直观数据库视图、强大查询功能以及版本控制和性能分析等特性,开发者可以大幅提升数据库开发效率和质量。无论是个人开发者还是团队协作,DataGrip都是一款值得推荐的数据库管理利器。

    高性能PHP应用开发_(0601).rar

    - **Nginx和Apache**:了解这两种Web服务器的性能特点,选择适合的部署方案。 - **负载均衡器**:学习如何配置如`HAProxy`或`Nginx`的负载均衡,分发请求至多个服务器。 7. **日志与监控** - **日志记录**:正确...

    性能测试经验分享.ppt

    性能测试经验分享 性能测试是一种验证系统性能的方法,旨在评估系统在高负载或高压力下的表现。...性能测试是对系统性能的评估和优化,旨在提高系统的性能和效率,并为客户提供良好的服务和支持。

    软件性能测试过程详解与案例剖析

    包括从不同视角(用户、管理员、开发人员)对软件性能的理解,总结了用户视角下的软件性能包括响应速度、可用性等方面,管理员视角下的性能涉及系统资源利用效率,而开发视角则关注代码的优化和资源使用情况。...

    高性能网站的开发(开发经验)

    了解开源项目可以借鉴和利用成熟技术,提高开发效率。 9. **性能优化策略**: - **良好规划**:域名规划、选择适合的Web服务器、静态与动态内容分离,如使用Nginx作为反向代理服务器,可以大大提高性能。 - **...

Global site tag (gtag.js) - Google Analytics