对于企业网络应用程序,每一点都很重要。
您可以分享哪些性能提示来帮助程序员更有效地编程?
开始吧:
对字符串使用StringBuilders,因为字符串是可变的(每次修改它们时都会重新创建)。
避免使用数据集,因为它们非常臃肿,请改用SqlReader。
答案 0 :(得分:24)
问题中提出的观点是微观优化。我不同意“每一点点都有帮助”的前提 - 特别是如果以牺牲可读性为代价。
您知道,如果您能够轻松阅读和理解您的代码,那意味着您可以轻松地进行体系结构更改。那些是真正的大赢家,而不是微优化。你试图调整每一行代码的次数越多,就越难以重构整个设计。
所以我的提示是:
到目前为止,这些都不是针对网络应用的。对于Web应用程序(以及一般的服务器端):
答案 1 :(得分:15)
你将会看到(几乎)所有应用程序中最大的收益是调整数据库。
编码......
数据库......
如果所有其他方法都失败了,请将其中的狗屎缓存出去并为此问题投入更多硬件! :)
答案 2 :(得分:3)
我们每天都在处理这个问题。
我们会缓存一些使用过的数据集。我们有一个相当复杂的数据层缓存机制,对我们很有用。
几乎所有事情的懒惰评估。
用户控件的页面缓存和部分缓存
我们根本不使用会话状态,所以我们完全禁用了它。
将网站配置为以已知的低级别用户身份运行。
以同样的低级别用户身份连接到SQL Server。这有助于连接池 - 所有连接基本相同。
没有临时SQL。仅存储过程。帮助执行performand和SQL注入。
string.Concat()而不是string + string + ...或StringBuilder
答案 3 :(得分:3)
除了曼伍德,没有人提到ViewState,这是非常令人惊讶的。我会将ViewState Management视为性能提升的最重要考虑因素。
我的清单:
编辑:[已添加6-8]
答案 4 :(得分:2)
微软出版了一本名为Improving .NET Application Performance and Scalability的书。这是必读书。
答案 5 :(得分:1)
答案 6 :(得分:1)
除了数据库之外,另一个非常重要的事情要看......
页面大小和请求数量。这应该是不言而喻的,但是ASP.NET充斥着大量垃圾输出(增加大小)并创建了一百万个外部脚本文件(请求数量),这是非常糟糕的。
答案 7 :(得分:1)
答案 8 :(得分:0)
答案 9 :(得分:0)
检查日志并最小化每个请求所服务的HTML数量。 viewstate和臃肿的第三方控件可能会破坏您的应用程序。例如,我们长时间使用了来自infragistics的网格。非常有能力,但即使在它的剥离形式,它使页面大约60-90k +很多java脚本。这严重限制了我们可以服务的请求数量,即使是在内部千兆位连接上也是如此。
答案 10 :(得分:0)
根据我的经验,以下内容有很大不同:
答案 11 :(得分:0)
如果您的Web服务器受到大量并发请求的攻击,并且每个页面请求似乎需要更长时间的服务,您可能需要考虑转换为异步页面处理模型。 / p>