使用应用程序跟踪对性能改变进行量化分析

简介:使用 Apache Web 服务器作为示例,以了解如何分析公共配置的性能含义。使用应用程序跟踪 来观察应用程序运行过程中进行的系统调用。通过统计调用的次数和发生的时间,您可以轻松地了解性能 改变的影响。

您可以对应用程序进行跟踪,以找出它们暂停或不运行的原因。并且可以使用同样 的方法,了解更多关于应用程序的信息并理解某些配置的性能含义。因为 Apache 非常流行并且大多数读 者对它都比较熟悉,所以本文使用 Apache 作为示例。Apache 所进行的每次系统调用都会对 Web 页面的 提供带来延迟,通过跟踪不同配置下的 Web 服务器,您可以确定具体配置的影响。

应用程序跟踪 概述

在应用程序的执行过程中,当需要打开文件、发送数据包或者使用系统资源时,它会对基础 操作系统进行相应的系统调用。跟踪应用程序意味着可以在调用发生时观察到这些系统调用,这将使得您 能够深入地了解该应用程序的行为。在 Solaris 和 IBM AIX 操作系统 (AIX) 中,使用 truss 命 令完成这项任务,而在 Linux 中则使用 strace。清单 1 显示了对 pwd 命令进行跟踪的示例。

清单 1. 跟踪 pwd 命令

-bash-3.00$ truss pwd
...
getcwd ("/export/home/sean", 1025)        = 0
/export/home/sean
write(1, " / e x p o r t / h o m e".., 18)   = 18
_exit(0)

在删除开始 处与加载该应用程序相关的输出内容后,您可以看到所进行的三次系统调用:

getcwd 返回当前工作目录。输出内容中显示了字符串“/export/home/sean”返回到缓冲 区。

write 可以显示给定的字符串。因为在其执行之后才显示这个系统调用,所以先输出了它的执行结果 。还可以注意到,write 系统调用的结果是写入字符的个数数目,在这个示例中为 17 加上一个回车。

_exit 使用错误代码 0 退出该程序,这个错误代码通常表示成功结束。

尽管这是一个很简单的示例,但它演示了通过应用程序跟踪可以观察程序内部机制的程度。有关跟踪 方面更深入的信息,请参见参考资料部分。

时间: 2024-12-02 03:14:07

使用应用程序跟踪对性能改变进行量化分析的相关文章

采用AJAX提高网站程序的带宽性能详解

ajax|程序|详解|性能 介绍 作为一个做网页性能测试的公司,我们一直关注新的开发技术在提高网页程序性能方面的影响.我们有不少用户遇到仅仅是因为他们网页的大小而影响其性能的问题.简单说--页面太大了不能在有限的带宽条件下达到理想的性能.很多情况下,在不同网页间包含的基本要素是相同的.例如,页头.页尾.导航条都很少变化,在一些程序中甚至根本没有变化.这点启发我们,如果程序只更新页面中需要改变的部分,将可以节省可观的带宽. 目标 为了验证这个理论,我们决定看看是否能让程序节约至少50%的带宽.我们

采用AJAX提高网站程序的带宽性能

ajax|程序|性能 介绍 作为一个做网页性能测试的公司,我们一直关注新的开发技术在提高网页程序性能方面的影响.我们有不少用户遇到仅仅是因为他们网页的大小而影响其性能的问题.简单说--页面太大了不能在有限的带宽条件下达到理想的性能.很多情况下,在不同网页间包含的基本要素是相同的.例如,页头.页尾.导航条都很少变化,在一些程序中甚至根本没有变化.这点启发我们,如果程序只更新页面中需要改变的部分,将可以节省可观的带宽. 目标 为了验证这个理论,我们决定看看是否能让程序节约至少50%的带宽.我们选择了

java socket 多线程-请问下面这个程序,在不改变功能的前提下,可以改装成多线程运行吗?*请贴上代码,谢谢*

问题描述 请问下面这个程序,在不改变功能的前提下,可以改装成多线程运行吗?*请贴上代码,谢谢* import java.net.*; // for Socket, ServerSocket, and InetAddress import java.io.*; // for IOException and Input/OutputStream public class Server { private static final int BUFSIZE = 32; // Size of receiv

Swift 性能探索和优化分析

Swift 性能探索和优化分析 本文首发在 CSDN<程序员>杂志,订阅地址 http://dingyue.programmer.com.cn/. Apple 在推出 Swift 时就将其冠以先进,安全和高效的新一代编程语言之名.前两点在 Swift 的语法和语言特性中已经表现得淋漓尽致:像是尾随闭包,枚举关联值,可选值和强制的类型安全等都是 Swift 显而易见的优点.但是对于高效一点,就没有那么明显了.在 2014 年 WWDC 大会上 Apple 宣称 Swift 具有超越 Object

Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析_Android

        在前面几篇文章中,我们详细介绍了Android系统进程间通信机制Binder的原理,并且深入分析了系统提供的Binder运行库和驱动程序的源代码.细心的读者会发现,这几篇文章分析的Binder接口都是基于C/C++语言来实现的,但是我们在编写应用程序都是基于Java语言的,那么,我们如何使用Java语言来使用系统的Binder机制来进行进程间通信呢?这就是本文要介绍的Android系统应用程序框架层的用Java语言来实现的Binder接口了.        熟悉Android系统

Android应用程序运行的性能设计综述

Android应用程序运行的移动设备受限于其运算能力,存储空间,及电池续航.由此,它必须是高效的.电池续航可能是一个促使你优化程序的原因,即使他看起来已经运行的足够快了.由于续航对用户的重要性,当电量耗损陡增时,意味这用户迟早会发现是由于你的程序. 虽然这份文档主要包含着细微的优化,但这些绝不能成为你软件成败的关键.选择合适的算法和数据结构永远是你最先应该考虑的事情,但这超出这份文档之外. 1. 介绍 写出高效的代码有两条基本的原则: ◆ 不作没有必要的工作 ◆ 尽量避免内存分配. 2. 明智的

Android应用程序运行的性能设计

Android应用程序运行的移动设备受限于其运算能力,存储空间,及电池续航.由此,它必须是高效的.电池续航可能是一个促使你优化程序的原因,即使他看起来已经运行的足够快了.由于续航对用户的重要性,当电量耗损陡增时,意味这用户迟早会发现是由于你的程序. 虽然这份文档主要包含着细微的优化,但这些绝不能成为你软件成败的关键.选择合适的算法和数据结构永远是你最先应该考虑的事情,但这超出这份文档之外. 1. 介绍 写出高效的代码有两条基本的原则: ◆ 不作没有必要的工作 ◆ 尽量避免内存分配. 2. 明智的

Java开发中程序和代码性能优化

现在计算机的处理性能越来越好,加上JDK升级对一些代码的优化,在代码层针对一些细节进行调整可能看不到性能的明显提升,在开发中注意这些,更多的是可以保持一种性能优先的意识. 一 条件控制语句中的优化 1.在循环中应该避免使用复杂的表达式. 在循环中,循环条件会被反复计算,应该避免把一些计算放在循环进行的部分中,程序将会运行的更快.比如: for(int i=0;i<list.size();i++) 可以改为 //我的电脑上,测试数量级在10^7,速度提升一倍. for(int i=0,len=li

官方文档:Android应用程序运行的性能设计

Android应用程序运行的移动设备受限于其运算能力,存储空间,及电池续航.由此,它必须是高效的.电池续航可能是一个促使你优化程序的原因,即使他看起来已经运行的足够快了.由于续航对用户的重要性,当电量耗损陡增时,意味这用户迟早会发现是由于你的程序. 虽然这份文档主要包含着细微的优化,但这些绝不能成为你软件成败的关键.选择合适的算法和数据结构永远是你最先应该考虑的事情,但这超出这份文档之外. 1. 介绍 写出高效的代码有两条基本的原则: ◆ 不作没有必要的工作 ◆ 尽量避免内存分配. 2. 明智的