对于企业Web应用程序,每一点点都很重要.
您可以分享哪些性能提示来帮助程序员更有效地编程?
开始吧:
对字符串使用StringBuilders,因为字符串是可变的(每次修改它们时都会重新创建它们).
避免使用数据集,因为它们非常臃肿,请改用SqlReader.
Jon Skeet.. 24
问题中提出的观点是微观优化.我不同意"每一点点都有帮助"的前提 - 特别是如果以牺牲可读性为代价.
您知道,如果您能够轻松阅读和理解您的代码,那意味着您可以轻松地进行架构更改.那些是真正的大赢家,而不是微优化.你试图调整每行代码的次数越多,就越难以重构整个设计.
所以我的提示是:
尽可能编写最易读的代码
不要过早优化实施 - 但要尽早考虑架构性能问题
在你用硬数字来告诉你是否改进之前,不要改变表演的名称
使用分析器来帮助发现瓶颈
到目前为止,这些都不是特定于网络应用程序的.对于Web应用程序(以及一般的服务器端):
除非您确实知道您永远不需要多台服务器,否则请确保您的代码可以横向扩展.如果您有能力这样做,请从两台服务器(或更多)开始,这样您就可以尽早解决任何问题(会话等).这也有助于滚动升级等.
编辑:我根本没有解决数据库.凯尔在这方面的答案很好.如果可能,请确保您的数据库也可以扩展:)
问题中提出的观点是微观优化.我不同意"每一点点都有帮助"的前提 - 特别是如果以牺牲可读性为代价.
您知道,如果您能够轻松阅读和理解您的代码,那意味着您可以轻松地进行架构更改.那些是真正的大赢家,而不是微优化.你试图调整每行代码的次数越多,就越难以重构整个设计.
所以我的提示是:
尽可能编写最易读的代码
不要过早优化实施 - 但要尽早考虑架构性能问题
在你用硬数字来告诉你是否改进之前,不要改变表演的名称
使用分析器来帮助发现瓶颈
到目前为止,这些都不是特定于网络应用程序的.对于Web应用程序(以及一般的服务器端):
除非您确实知道您永远不需要多台服务器,否则请确保您的代码可以横向扩展.如果您有能力这样做,请从两台服务器(或更多)开始,这样您就可以尽早解决任何问题(会话等).这也有助于滚动升级等.
编辑:我根本没有解决数据库.凯尔在这方面的答案很好.如果可能,请确保您的数据库也可以扩展:)
你几乎可以在任何应用程序中看到的最大收益是调整你的数据库.
编码......
当你只需要2个时,你选择了十几个列吗?
你是否抓住所有结果来执行SUM?
您是否抓取1,000条记录显示10?
你每个页面都会发出一百个查询吗?
数据库......
你的桌子上有索引吗?
它们是正确的索引吗?
您是否使用SQL事件探查器获取了一些示例查询并在查询分析器中检出了他们的执行计划?
你看到TABLE SCAN - BAD!
你看到INDEX SEEK - 好!
如果所有其他方法都失败了,请将其中的狗屎缓存出来并为问题投入更多硬件!:)