`
piao_bo_yi
  • 浏览: 4494 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于性能优化

阅读更多
我发现一个现象,很多两三年以下的人写代码动不动就扯性能,其实他们大部分人根本不知道到底哪是性能瓶颈,函数调用的效率,CPU执行指令需要的时间...工作效率低不说,还考虑很多没用的东西。个人感觉,性能这个东西应该考虑:
1.考虑程序的应用范围。如果你是给核反应堆写实时程序,那每一步你可能都得考虑,其他就大部分通用程序而言,你不用每一步都考虑。
2.性能要考虑关键瓶颈。不是每一步都是关键,关键瓶颈不是写之前提前考虑出来的,而是测出来的。很多你以为瓶颈的地方往往不是瓶颈。
3.低效的算法+大量的处理数据两者结合往往是导致效率低下的根本原因,而函数调用,拆分函数等不是。JAVA初学者喜欢怀疑函数调用,C++派则彻底怀疑继承结构和堆上的数据,很有意思的现象。即使低效的算法处理小量数据也没必要优化,e.g.冒泡排序和快速排序在排少量数据的时候的性能差异不需要考虑。

大家说说自己的看法。

P.S.编程里面真的有很多不符合直觉的结论。比如边开发边考虑性能优化是否必要,比如添加人手是否能提高项目进度,真的是很有意思。
分享到:
评论
15 楼 ouchxp 2010-11-16  
zhxing 写道
如果按你说的ArrayList和LinkedList在编程中是不需要注意的了,随便用就行了。。

代码写多了,对代码的要求也会高点,我们也希望能写出性能高效,优雅简洁的代码。。简洁和高性能一般都会有冲突的,这需要我们去权衡。。

ps:架构决定了性能的大部分,所以架构搭的好,总体性能也就不会差。代码的优化算不上什么。。但就是看不惯。。


LZ的前提 是小数据量 和 新手程序员
14 楼 ouchxp 2010-11-16  
抛出异常的爱 写道
对于性能
1.对于新手.不要优化.
2.对于老手.建议不要优化.

+1
不出问题建议不要轻易优化.
13 楼 piao_bo_yi 2010-11-16  
zhxing 写道
如果按你说的ArrayList和LinkedList在编程中是不需要注意的了,随便用就行了。。。

1.我的观点恰好认为ArrayList和LinkedList可以在平常“随便”用。因为如果你处理的是小数据量,这些根本不需要考虑(我知道链表插入删除只需要两步,数组需要x步,以及随机访问和线性遍历的查找...但是任何对此类无聊问题的考虑都会影响你的开发效率和你的思路。要将思路集中于对关键的逻辑的处理,这样你才能编程快和准。
zhxing 写道

代码写多了,对代码的要求也会高点,我们也希望能写出性能高效,优雅简洁的代码。。简洁和高性能一般都会有冲突的,这需要我们去权衡。。

2.对于通用应用程序,你写一部分代码,除非你那段代码是瓶颈,否则你对代码的性能优化会让他们难以维护(这还是在你知道如何优化的前提下)。一般情况,性能优化是没有必要的,可读性优化才更有价值。
12 楼 ouchxp 2010-11-16  
bitray 写道
赞成2楼和三楼的观点。虽然可能平时大家注意的并不是真正的性能瓶颈。但是如果不重视自己代码的书写规范和简洁,那么写出来的代码就是隐藏的瓶颈,是你最后很难优化出来的东西。有习惯的程序员用stringbuffer和stringbuilder,但是如果是不重视,就会有人用+连接,在多处,一定数据量的情况下,都可能产生隐含问题等


JDK自己已经有优化了. 不合理的优化反而会降低效率
比如字符串常量拼接
String str ="aaa" + "bbb" +"ccc" + "ddd";

StringBuilder sb = new StringBuilder();
sb.append("aaa");
sb.append("bbb");
sb.append("ccc");
sb.append("ddd");
String str = sb.toString();

哪种效率高? 答案是第一种. 对于新手来说想优化很容易适得其反.
反编译看一下就知道为什么了.
11 楼 trydofor 2010-11-16  
╮(╯▽╰)╭,很多人毁了Java :D

包括但不限于:
* 精通 java,jsp ...
* 精通 SSH ... 框架
* 开发 ...管理系统

性能优化?嘛是性能,啥是优化。
10 楼 william_ai 2010-11-16  
╮(╯▽╰)╭,java毁了很多人。
国内用得起java做的系统的,电信、移动等大客户居多。给他们做系统,性能上不去了,多弄两台小机、大机就ok了。
可是这个世界上除了这些java平台上的系统,真的还有许多许多领域的。举个子,总不能在火星车上装台superdome跑java的ERP吧。
9 楼 ironsabre 2010-11-16  
qianhd 写道
对于新手 写的时候动动脑子 别写出内存泄漏的代码 就谢天谢地了

有些人习惯性的爱写内存泄漏的代码
真不知道怎么想的


我觉得新手想要写出内存泄漏的代码是很难的,或者说你让他写一段内存泄漏的代码他都写不出来。要不你写一个试试?
8 楼 qianhd 2010-11-16  
对于新手 写的时候动动脑子 别写出内存泄漏的代码 就谢天谢地了

有些人习惯性的爱写内存泄漏的代码
真不知道怎么想的
7 楼 LifeFree 2010-11-16  
piao_bo_yi 写道
我发现一个现象,很多两三年以下的人写代码动不动就扯性能,其实他们大部分人根本不知道到底哪是性能瓶颈,函数调用的效率,CPU执行指令需要的时间...工作效率低不说,还考虑很多没用的东西。个人感觉,性能这个东西应该考虑:
1.考虑程序的应用范围。如果你是给核反应堆写实时程序,那每一步你可能都得考虑,其他就大部分通用程序而言,你不用每一步都考虑。
2.性能要考虑关键瓶颈。不是每一步都是关键,关键瓶颈不是写之前提前考虑出来的,而是测出来的。很多你以为瓶颈的地方往往不是瓶颈。
3.低效的算法+大量的处理数据两者结合往往是导致效率低下的根本原因,而函数调用,拆分函数等不是。JAVA初学者喜欢怀疑函数调用,C++派则彻底怀疑继承结构和堆上的数据,很有意思的现象。即使低效的算法处理小量数据也没必要优化,e.g.冒泡排序和快速排序在排少量数据的时候的性能差异不需要考虑。

大家说说自己的看法。


比较同意楼主的看法。
我经常遇到的一个情况是系统一慢,直觉就是数据库抓个快照,拿出来一分析,加两索引,改几个sql查询;系统好了。

90%以上都不是应用服务器并发性能,代码函数调用等其他原因引起的性能问题。


还是那句老话:Premature optimization is the root of all evil.

以上情况建立在编程平均水平比较低的普通国内软件企业。水平高的请飘过。
6 楼 抛出异常的爱 2010-11-16  
对于性能
1.对于新手.不要优化.
2.对于老手.建议不要优化.
5 楼 forgood 2010-11-16  
对于性能问题,我同意lz 2.性能要考虑关键瓶颈。不是每一步都是关键,关键瓶颈不是写之前提前考虑出来的,而是测出来的。很多你以为瓶颈的地方往往不是瓶颈。 只有找到了瓶颈才能想法击破。。。
4 楼 bitray 2010-11-16  
赞成2楼和三楼的观点。虽然可能平时大家注意的并不是真正的性能瓶颈。但是如果不重视自己代码的书写规范和简洁,那么写出来的代码就是隐藏的瓶颈,是你最后很难优化出来的东西。有习惯的程序员用stringbuffer和stringbuilder,但是如果是不重视,就会有人用+连接,在多处,一定数据量的情况下,都可能产生隐含问题等
3 楼 hyl1234 2010-11-16  
xixix2004 写道
1,性能确实不需要每一步都考虑,但是也是不能不考虑的。作为一个程序员,不是代码写出来,跑的通就可以心安理得的,对吗。

2,对于没有经验的程序员,性能问题是测出来的;对于有经验的程序员,性能问题是预测出来的。即使预测的有偏差,未雨绸缪也总好过亡羊补牢,对吗。

3,你自己也说了“小量数据”,“少量数据”,对吗。

心态放平和点,对于成长有好处。


赞成xixix2004 的说法,很多时候,你能预见到的问题,就没有必要到测试的时候才去发现,改正
2 楼 zhxing 2010-11-16  
如果按你说的ArrayList和LinkedList在编程中是不需要注意的了,随便用就行了。。

代码写多了,对代码的要求也会高点,我们也希望能写出性能高效,优雅简洁的代码。。简洁和高性能一般都会有冲突的,这需要我们去权衡。。

ps:架构决定了性能的大部分,所以架构搭的好,总体性能也就不会差。代码的优化算不上什么。。但就是看不惯。。
1 楼 xixix2004 2010-11-16  
1,性能确实不需要每一步都考虑,但是也是不能不考虑的。作为一个程序员,不是代码写出来,跑的通就可以心安理得的,对吗。

2,对于没有经验的程序员,性能问题是测出来的;对于有经验的程序员,性能问题是预测出来的。即使预测的有偏差,未雨绸缪也总好过亡羊补牢,对吗。

3,你自己也说了“小量数据”,“少量数据”,对吗。

心态放平和点,对于成长有好处。

相关推荐

    前端性能优化探索.pdf

    前端性能优化探索 前端性能优化是当前互联网开发中的一个重要话题。随着互联网技术的快速发展,Web前端技术也逐渐成为了互联网开发的重要一环。然而,在如今这个追求极致体验的时代,我们不仅要实现业务需求,更...

    Oracle性能优化技术内幕

    本书讲述Oracle 性能优化技术。书中对给出的每一种优化方法和措施都从...年以来关于性能优化人们一直认为是正确的某些错误观点和方法提出了批判,令人信服地证明了这些观 点和方法的荒诞,提出了较为正确的观点和方法。

    阿里巴巴Java性能调优实战(2021-2022华山版)+Java架构核心宝典+性能优化手册100技巧.rar

    性能优化手册是一套java性能学习研究小技巧,包含内容:Java性能优化、JVM性能优化、服务器性能优化、数据库性能优化、前端性能优化等。 内容包括但不限于: String 性能优化的 3 个小技巧 HashMap 7 种遍历方式...

    前端性能优化与实践.zip

    "前端性能优化与实践.zip"这个压缩包包含了一系列关于前端性能优化的深度文章和教程,涵盖了浏览器缓存机制、首屏加载优化、服务端渲染、事件处理策略、图片优化、性能监测工具以及CDN的工作原理等多个方面。...

    oracle数据库性能优化.pdf

    Oracle数据库性能优化是确保系统高效运行的关键环节,尤其是在大数据量和高并发的环境中。Oracle数据库因其先进、完整和集成的特性,在市场中占据主导地位,因此深入理解和掌握Oracle的优化技术至关重要。 首先,...

    Android性能优化.pdf

    【Android性能优化】是Android开发中的重要环节,涵盖了多个关键领域,包括ANR问题解析、crash监控方案、启动速度与执行效率优化、内存优化、耗电优化、网络传输与数据存储优化以及APK大小优化。 **ANR问题解析**是...

    更快、更强—— AIX性能优化

    标题与描述概述的知识点主要集中在AIX系统的性能优化策略,特别是针对处理速度的提升,重点关注的是CPU性能。本文将深入探讨这些知识点,提供一个全面的视角来理解AIX性能优化的关键方面。 ### AIX性能优化基础概念...

    CSAPP性能优化实验

    《CSAPP性能优化实验》是计算机科学与应用(Computer Science and Application Programming)课程的一个实践环节,旨在提升学生对程序性能优化的理解与技能。在这个实验中,我将详细探讨三个关键的优化策略,并结合...

    C++性能优化技术导论.pdf

    C++性能优化是一个复杂的主题,它涉及编译器、算法、语言特性、硬件架构以及操作系统等多个层面。性能优化的目标是提升软件执行效率,减少资源消耗,缩短响应时间,以及提高吞吐量。下面将详细介绍这些性能优化的...

    Unity性能优化.pptx

    Unity性能优化 Unity性能优化是指在游戏开发中提高游戏性能的过程,包括优化CPU和GPU的使用,以提高游戏的帧率和画质。下面是 Unity性能优化的相关知识点: 1. Unity性能调试工具及使用方法 Unity提供了多种...

    Java 大型网站性能优化实战从前端网络 CDN 到后端大促的全链路性能优化

    在构建和运行大型Java网站的过程中,性能优化是至关重要的,它直接影响着用户体验、服务器资源的利用率以及业务的可扩展性。本实战指南将探讨从前端网络到后端大促的全链路性能优化策略,旨在提升网站的整体效率。 ...

    C++高效编程:内存与性能优化(pdf版)

    《C++高效编程:内存与性能优化》是一本专注于C++编程语言内存管理和性能调优的书籍。本书深入探讨了如何在C++编程中高效地使用内存资源,以及如何进行性能优化,以编写出既高效又优雅的代码。 书籍作者Rene ...

    SQLServer性能优化与管理的艺术

    资源名称:SQL Server性能优化与管理的艺术内容简介:本书共15章,分为三部分,第一部分(第1-2章)为概述部分,阐述SQLServer方面的“性能”及相关概念。并给出常规的性能及性能相关的问题侦测的“方法论”,读者...

    mysql性能优化.pdf

    ### MySQL性能优化关键知识点 #### 一、MySQL简介与历史沿革 MySQL是一个开源的关系型数据库管理系统(RDBMS),最初由瑞典的MySQL AB公司开发。它的轻量级、高效性和低成本特性使其成为互联网上中小型网站的理想...

    SqlServer性能优化高效索引指南.pdf

    Sql Server性能优化高效索引指南 Sql Server性能优化高效索引指南是指在Sql Server数据库中,通过合理地设计和优化索引来提高数据库性能的一系列指南和最佳实践。本指南涵盖了索引的基本概念、索引的类型、索引的...

    Tomcat性能优化

    【文件】:“Tomcat7性能优化调优.docx”可能包含了关于Tomcat7性能优化的具体步骤、最佳实践和案例分析,这对于我们深入理解如何优化Tomcat7非常有价值。 以下是一些可能的Tomcat性能优化知识点: 1. **内存配置*...

    性能优化PPT.pdf

    ### 性能优化的核心概念与实践 #### 一、什么是性能优化? 性能优化是指通过一系列技术和方法提升系统或应用程序在处理任务时的速度、效率及稳定性等指标的过程。它旨在充分发挥硬件资源的优势,同时减少不必要的...

    性能优化-网站性能监测与优化

    Web前端性能优化数据 性能优化Web前端性能优化数据 性能优化Web前端性能优化数据 性能优化Web前端性能优化数据 性能优化

    《Oracle数据库性能优化实践指南》PDF

    《Oracle数据库性能优化实践指南》是一本专注于Oracle数据库性能调优的专业书籍,旨在帮助读者深入理解和掌握如何在实际环境中提升Oracle数据库的运行效率。Oracle数据库是全球广泛使用的大型企业级数据库管理系统,...

Global site tag (gtag.js) - Google Analytics