发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

你会如何优化应用程序的性能?

  • 2011-11-06
  • 本文字数:884 字

    阅读完需:约 3 分钟

StackExchange 是构建在 ASP.NET 和 SQL Server 基础之上的项目。最近, Sam Saffron Marc Gravell 分别撰写了博客,其中讲述了他们发现和解决性能问题的经验,在该过程中最终追踪到了.NET GC GEN-2 对象。大家可以从他们的博文中吸取很多关于优化生产环境中应用程序性能的经验。

问题是由自定义标签引擎引起的,它会在内存中存放大型对象列表。这两篇博文都值得一读,而 Sam 的文章则更详细地讲述了如何诊断问题。其中主要的应对方法包括:

  • 使用分析器。你可以使用类似于 MVC-MiniProfiler 的工具来分析方法调用,使用类似于.NET Memory Profiler 或者 Redgate ANTS Memory profiler 之类的内存分析器来跟踪内存使用情况。
  • 如果可以的话,要拥有可查询的日志——StackExchange 团队有后台执行的进程,它会解析原始的日志,并把它插入到大型的、专门的 SQL Server 实例中。如果无法查询日志,那么你就无法绘制出统计图并查看趋势或者模式。
  • 理解 GC 是如何工作的——.NET 中的垃圾回收器支持三代对象(GEN 0 到 GEN 2),而存放时间最长的数据会使用 GEN-2。GEN-2 的扫描频率最低,执行的成本最高,甚至可能会堵塞其它线程。Sam 建议阅读 Rico 的《Garbage Collector Basics and Performance Hints》一文以获得更多细节。

最后,团队采取了多项优化措施,包括针对应用程序的特定部分,从对象数组切换到索引数组,从类切换到结构体等。第一项措施是一种很常用的模式,这样数组就只针对主要的不可变列表的索引;而第二项并不常用,Sam 建议只在有超过 50 万个对象以上才使用它,这样在达到第二代垃圾回收器标准的时候就会很快释放内存。

StackExchange 团队对性能问题非常关注——比方说,你可以看到 StackOverflow 在三个不同的等级上使用caching ,从而提升反应时间,减少服务器的负载。

在InfoQ 上和MSDN 上都有很多关于性能和可伸缩性的资源可供参考,包括这篇 Rob Howard 撰写的文章。最后,引用 Sam 的话:“做很少的工作总是要比做更多工作消耗的资源少。”

你在扩展 ASP.NET 应用程序的时候,也有发现和解决瓶颈问题的类似经验和大家分享吗?

查看英文原文: How Do You Tune Your Application For Performance?

2011-11-06 02:502945
用户头像

发布了 340 篇内容, 共 125.7 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

Flutter 网络请求封装之Dio(Cookie管理、添加拦截器、下载文件、异常处理、取消请求等)

yechaoa

flutter android 6月月更 dio

Maven 基础

zarmnosaj

6月月更

DDD概念复杂难懂,实际落地如何设计代码实现模型?

Java全栈架构师

程序员 后端 领域驱动设计 DDD 架构师

解析数仓lazyagg查询重写优化

华为云开发者联盟

数据库 后端

新一代构建工具(1):对比rollup/parcel/esbuild—esbuild脱颖而出

zhoulujun

Rollup webpack esbuild

SDN系统方法 | 10. SDN的未来

俞凡

架构 网络 sdn SDN系统方法

揭秘GES超大规模图计算引擎HyG:图切分

华为云开发者联盟

人工智能 图计算 图切分

Pipenv中安装Django

宇宙之一粟

django 6月月更

面对AI人才培养的“产学研”鸿沟,昇腾AI如何做厚产业人才黑土地?

脑极体

MyBatis 执行流程及源码解析

码农参上

mybatis java实战

Wireshark网卡无法找到或没有显示的问题

岚哲

网络 Wireshark 域名 vpn 网卡

《网络是怎么样连接的》读书笔记 - 集线器、路由器和路由器(三)

懒时小窝

网络编程 网络

web内容如何保护:如何有效地保护 HTML5 格式的视频内容?

zhoulujun

DRM 视频版权保护 数字版权保护 h5视频版权

喜报|海泰方圆通过CMMI-3资质认证,研发能力获国际认可

电子信息发烧客

华为发布两大昇腾计划 推动AI人才发展和科研创新

郝俸🦁好棒

昇腾

网络协议之:redis protocol详解

程序那些事

网络协议 程序那些事 6月月更

源码其实很简单!阿里巴巴最新出品Spring学习脑图+视频+文档真香

Java全栈架构师

Java spring 源码 程序员 面试

什么是算子?

华为云开发者联盟

人工智能 算子

微博评论的计算架构

极客土豆

先到先得!“阿里爸爸”全新出品SpringBoot高级笔记(全彩版)

Java全栈架构师

Java 源码 程序员 面试 springboot

数据治理,说起来容易,做起来难

奔向架构师

数据治理 数据资产 6月月更

HotSpot JVM 「01」类加载、链接和初始化

Samson

学习笔记 hotspot 6月月更

Java代码优化请求合并与分而治之

码农参上

Java 大数据 高并发 java实战

居家办公让我绩效拿了C | 社区征文

大菠萝

初夏征文

TML转义字符:xss攻击与HTML字符的转义和反转义

zhoulujun

XSS xss攻击 转义字符 反转义

Tiger DAO VC产品正式上线,Seektiger生态的有力补充

鳄鱼视界

TLog 助力盘古框架实现微服务链路日志追踪

码农大熊

盘古开发框架

社招两年半10个公司28轮面试面经(含字节、拼多多、美团、滴滴......)

CoderW

Java 面试 简历模板 大厂

六大专题全方位优化,阿里巴巴性能优化小册终开源,带你直抵性能极致

Java全栈架构师

Java 程序员 面试 性能优化

中断操作:AbortController学习笔记

zhoulujun

IET出席2022世界科技社团发展与治理论坛 为构建国际科技共同体献言献策

E科讯

你会如何优化应用程序的性能?_.NET_Roopesh Shenoy_InfoQ精选文章