项目心得-驯服古怪的PROFILE!

23 篇文章 0 订阅
3 篇文章 1 订阅

转贴请注明出处!

今天是工作的第2天,项管第一天就让我接触PROFILE 测试一个程序,来得知各个函数的执行次数和时间.我曾经在看书的时候对这种测试程序有一些了解, 知道它是为了了解程序的性能屏障,并针对他们进行优化.

昨天做了一天却没有一点收获,到了家自己写了个简单的测试程序.并对工程进行设置.网上没有太多的PROFILE使用的文章,太多太多的转载让我失望而且无奈.于是自己终于通过努力在昨天晚上对自己简单的测试程序进行了测试.

但今天到了工作中.却发现面对庞大的项目我无能为力了,即使对项目也进行了PROFILE但测试的结果却少的可怜,甚至可以说只有简单的对MAIN 函数和抽象出来的封装函数有一些数据.对底层的函数连函数名都没有显示.并且大部分时间PROFILE菜单项都是灰色不能选的.后来在一个高手的帮助下.和自己的努力下.终于对这个项目成功的测试.因为项管主要让我测试一个.DLL 所以现在把我对此.DLL的测试进行一下说明.

当然你可以在CMD中直接自己命令行,但路径一定要正确.你也可以编写一个.BAT来批处理

COPY PDFBaseLib26.dll save
PREP /OM /FT PDFBaseLib26.DLL
COPY PDFBaselib26._ll PDFBaseLib26.dll
PROFILE /I PDFBaseLib26 /O PDFBaseLib26 AHPDFToolCmd26.exe -mergeFile -d hello.pdf -d test.pdf -o out.pdf
COPY save PDFBaseLib26.dll
PREP /M PDFBaseLib26
PLIST PDFBaseLib26 > Profile/PDFBaseLib26.txt

当然路径就不多说了 PREP PLIST PROFILE 3个.EXE文件都要在这个.BAT路径.并且需要从VC98 BIN中找到mspdb60.dll下载到这个本路径下.

文件中的AHPDFToolCmd26.exe -mergeFile -d hello.pdf -d test.pdf -o out.pdf
是针对此软件的命令行和参数.当然如果没有参数一样可以的.

这样PROFILE/下就会有一个文本文件.打开它,如果没有错误数据就出来了.

因为项目很大,我只截取一点来让大家熟悉一下.

Profile: Function timing, sorted by time
Date:    Thu Aug 02 17:11:05 2007


Program Statistics
------------------
    Command line at 2007 Aug 02 17:10: AHPDFToolCmd26.exe -mergeFile -d hello.pdf -d test.pdf -o out.pdf
    Total time: 1707.458 millisecond
    Time outside of functions: 398.236 millisecond
    Call depth: 62
    Total functions: 6523
    Total hits: 4181089
    Function coverage: 30.5%
    Overhead Calculated 11
    Overhead Average 11

Module Statistics for pdfbaselib26.dll
--------------------------------------
    Time in module: 1309.222 millisecond
    Percent of time in module: 100.0%
    Functions in module: 6523
    Hits in module: 4181089
    Module function coverage: 30.5%

        Func          Func+Child           Hit
        Time   %         Time      %      Count  Function
---------------------------------------------------------
     132.862  10.1      132.862  10.1    34097 std::basic_istream<char,struct std::char_traits<char> >::get(char &) (msvcp60.dll)
     132.255  10.1      193.833  14.8   596096 std::_Construct(char *,char const &) (pdfreader.obj)
     116.436   8.9      175.783  13.4   596096 std::allocator<char>::destroy(char *) (pdfreader.obj)
      95.262   7.3      289.095  22.1   596096 std::allocator<char>::construct(char *,char const &) (pdfreader.obj)
      72.473   5.5       72.473   5.5     4128 std::basic_istream<char,struct std::char_traits<char> >::operator>>(long &) (msvcp60.dll)
      66.290   5.1       66.290   5.1     4517 std::basic_istream<char,struct std::char_traits<char> >::tellg(void) (msvcp60.dll)
      64.535   4.9      353.630  27.0     4657 std::vector<char,class std::allocator<char> >::_Ufill(char *,unsigned int,char const &) (pdfreader.obj)
      61.812   4.7       61.812   4.7   599996 operator new(unsigned int,void *) (pdfencryptionsignature.obj)
      59.347   4.5       59.347   4.5   596096 std::_Destroy(char *) (pdfreader.obj)
      51.157   3.9      226.940  17.3    13971 std::vector<char,class std::allocator<char> >::_Destroy(char *,char *) (pdfreader.obj)
      34.806   2.7       34.806   2.7     2957 std::basic_istream<char,struct std::char_traits<char> >::seekg(long,enum std::ios_base::seekdir) (msvcp60.dll)
      19.984   1.5       19.984   1.5        4 std::basic_istream<char,struct std::char_traits<char> >::getline(char *,int) (msvcp60.dll)
      18.993   1.5       45.238   3.5        4 PDF_Base::CLPD::Read(class std::basic_istream<char,struct std::char_traits<char> > &,int) (pdf_lpd.obj)
      17.604   1.3       17.604   1.3     5491 std::operator<(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &) (msvcp60.dll)
      17.487   1.3       17.487   1.3    65615 std::vector<char,class std::allocator<char> >::begin(void) (pdfreader.obj)
      14.364   1.1       14.364   1.1     8891 operator new(unsigned int) (msvcrt.dll)
      13.936   1.1      900.082  68.7     1808 PDF_Base::PDFReader::readCurrentObj(class PDF_Base::PDFObject * &) (pdfreader.obj)
      13.589   1.0       48.439   3.7    56301 PDF_Base::charVector::operator[](int const &) (pdfreader.obj)
      13.580   1.0      827.604  63.2     4657 PDF_Base::operator>>(class std::basic_istream<char,struct std::char_traits<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &) (pdfreader.obj)
      12.792   1.0      243.082  18.6     4657 std::vector<char,class std::allocator<char> >::~vector<char,class std::allocator<char> >(void) (pdfreader.obj)
      12.249   0.9       29.207   2.2    56301 std::vector<char,class std::allocator<char> >::operator[](unsigned int) (pdfreader.obj)
       9.770   0.7       15.228   1.2     6445 PDF_Base::PDFName::~PDFName(void) (basefont.obj)
       8.837   0.7        8.837   0.7    13692 _free (msvcrt.dll)
       8.363   0.6        8.363   0.6       28 std::basic_istream<char,struct std::char_traits<char> >::read(char *,int) (msvcp60.dll)
       8.284   0.6       67.275   5.1     1150 PDF_Base::operator>>(class PDF_Base::PDFReader &,class PDF_Base::PDFNumeric &) (pdfreader.obj)
       7.844   0.6        8.545   0.7     5834 PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject>::PDFSmartPtr<class PDF_Base::PDFObject>(class PDFSmartPtr<class PDF_Base::PDFObject>::PDFSmartPtr<class PDF_Base::PDFObject> const &) (cjkfont.obj)
       7.757   0.6        7.757   0.6     9103 std::basic_istream<char,struct std::char_traits<char> >::putback(char) (msvcp60.dll)
       7.615   0.6        7.615   0.6     4657 std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::append(char const *,unsigned int) (msvcp60.dll)
       7.039   0.5        7.039   0.5   126573 std::vector<char,class std::allocator<char> >::size(void) (pdfreader.obj)
       6.836   0.5       15.672   1.2    13691 operator delete(void *) (delop_s.obj)
       6.796   0.5      745.877  57.0       96 PDF_Base::operator>>(class PDF_Base::PDFReader &,class PDF_Base::PDFArray<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > &) (pdfreader.obj)
       6.200   0.5      249.282  19.0     4657 PDF_Base::charVector::~charVector(void) (pdfreader.obj)
       5.353   0.4        5.353   0.4     9655 PDF_Base::PDFRCObject::~PDFRCObject(void) (basefont.obj)
       4.586   0.4        4.586   0.4      212 std::basic_istream<char,struct std::char_traits<char> >::operator>>(float &) (msvcp60.dll)
       4.524   0.3        4.524   0.3     1100 std::basic_ostream<char,struct std::char_traits<char> >::operator<<(long) (msvcp60.dll)
       4.167   0.3        4.217   0.3      390 std::pair<struct PDF_Base::IndirectObj const ,class PDF_Base::ObjState>::pair<struct PDF_Base::IndirectObj const ,class PDF_Base::ObjState>(struct pair<struct PDF_Base::IndirectObj const ,class PDF_Base::ObjState>::pair<struct PDF_Base::IndirectObj const ,class PDF_Base::ObjState> const &) (pdfreader.obj)
       3.657   0.3        4.751   0.4     3630 PDF_Base::PDFName::PDFName(char const *) (basefont.obj)
       3.597   0.3       10.296   0.8      390 std::_Tree<struct PDF_Base::IndirectObj,struct std::pair<struct PDF_Base::IndirectObj const ,class PDF_Base::ObjState>,struct std::map<struct PDF_Base::IndirectObj,class PDF_Base::ObjState,struct std::less<struct PDF_Base::IndirectObj>,class std::allocator<class PDF_Base::ObjState> >::_Kfn,struct std::less<struct PDF_Base::IndirectObj>,class std::allocator<class PDF_Base::ObjState> >::_Destval(struct std::pair<struct PDF_Base::IndirectObj const ,class PDF_Base::ObjState> *) (pdfdocimpl.obj)
       3.575   0.3      371.504  28.4     4657 std::vector<char,class std::allocator<char> >::insert(char *,unsigned int,char const &) (pdfreader.obj)
       3.339   0.3        3.339   0.3    14246 std::_Lockit::_Lockit(void) (msvcp60.dll)
       3.241   0.2        6.328   0.5     4657 std::vector<char,class std::allocator<char> >::erase(char *,char *) (pdfreader.obj)
       3.109   0.2       10.985   0.8     9314 std::allocator<char>::deallocate(void *,unsigned int) (pdfreader.obj)
       3.041   0.2       10.567   0.8      660 std::_Tree<class PDF_Base::PDFName,struct std::pair<class PDF_Base::PDFName const ,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> >,struct std::map<class PDF_Base::PDFName,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject>,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Kfn,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Insert(struct std::_Tree<class PDF_Base::PDFName,struct std::pair<class PDF_Base::PDFName const ,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> >,struct std::map<class PDF_Base::PDFName,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject>,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Kfn,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Node *,struct std::_Tree<class PDF_Base::PDFName,struct std::pair<class PDF_Base::PDFName const ,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> >,struct std::map<class PDF_Base::PDFName,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject>,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Kfn,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Node *,struct std::pair<class PDF_Base::PDFName const ,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > const &) (pdfobj.obj)
       2.931   0.2        2.931   0.2     2496 std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::assign(char const *,unsigned int) (msvcp60.dll)
       2.928   0.2        2.928   0.2      312 std::basic_istream<char,struct std::char_traits<char> >::operator>>(unsigned int &) (msvcp60.dll)
       2.906   0.2        2.906   0.2     7179 std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::erase(unsigned int,unsigned int) (msvcp60.dll)
       2.384   0.2      381.209  29.1     4657 std::vector<char,class std::allocator<char> >::assign(unsigned int,char const &) (pdfreader.obj)
       2.319   0.2        2.319   0.2      210 std::basic_ostream<char,struct std::char_traits<char> >::operator<<(float) (msvcp60.dll)
       2.132   0.2       15.157   1.2      945 PDF_Base::operator>>(class PDF_Base::PDFReader &,class PDF_Base::PDFName &) (pdfreader.obj)
       1.959   0.1        8.221   0.6     6418 std::_Allocate(int,char *) (basefont.obj)
       1.877   0.1        2.245   0.2     5418 std::_Tree<class PDF_Base::PDFName,struct std::pair<class PDF_Base::PDFName const ,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> >,struct std::map<class PDF_Base::PDFName,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject>,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Kfn,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Key(struct std::_Tree<class PDF_Base::PDFName,struct std::pair<class PDF_Base::PDFName const ,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> >,struct std::map<class PDF_Base::PDFName,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject>,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Kfn,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Node *) (pdfobj.obj)
       1.834   0.1        1.834   0.1     9859 std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::at(unsigned int) (msvcp60.dll)
       1.695   0.1       13.738   1.0     1114 PDF_Base::operator<<(class PDF_Base::PDFWriter &,class PDF_Base::PDFNumeric &) (pdfwriter.obj)
       1.692   0.1        2.439   0.2      837 std::_Tree<class PDF_Base::PDFName,struct std::pair<class PDF_Base::PDFName const ,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> >,struct std::map<class PDF_Base::PDFName,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject>,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Kfn,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Freenode(struct std::_Tree<class PDF_Base::PDFName,struct std::pair<class PDF_Base::PDFName const ,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> >,struct std::map<class PDF_Base::PDFName,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject>,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Kfn,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Node *) (pdfobj.obj)
       1.534   0.1        3.310   0.3     3989 std::fpos<int>::fpos<int>(long) (pdf_lpd.obj)
       1.534   0.1        1.861   0.1      663 std::map<class PDF_Base::PDFName,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject>,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::empty(void) (pdfobj.obj)
       1.494   0.1        2.309   0.2     4678 std::_Tree<class PDF_Base::PDFName,struct std::pair<class PDF_Base::PDFName const ,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> >,struct std::map<class PDF_Base::PDFName,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject>,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Kfn,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::iterator::operator->(void) (pageresources.obj)
       1.414   0.1        1.414   0.1     6846 std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(class basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::allocator<char> const &) (msvcp60.dll)
       1.404   0.1        2.913   0.2     9655 PDF_Base::PDFObject::PDFObject(enum PDFObject::ObjType) (basefont.obj)
       1.347   0.1        7.958   0.6     1081 std::vector<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::insert(class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> *,unsigned int,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> const &) (cjkfont.obj)
       1.336   0.1        1.336   0.1     9314 std::vector<char,class std::allocator<char> >::_Ucopy(char const *,char const *,char *) (pdfreader.obj)
       1.328   0.1        1.328   0.1     1529 std::operator>>(class std::basic_istream<char,struct std::char_traits<char> > &,char &) (msvcp60.dll)
       1.282   0.1        1.282   0.1    14246 std::_Lockit::~_Lockit(void) (msvcp60.dll)
       1.280   0.1        5.599   0.4     1325 std::_Tree<class PDF_Base::PDFName,struct std::pair<class PDF_Base::PDFName const ,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> >,struct std::map<class PDF_Base::PDFName,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject>,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Kfn,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Lbound(class PDF_Base::PDFName const &) (pdfobj.obj)
       1.269   0.1        1.269   0.1    13971 std::vector<char,class std::allocator<char> >::end(void) (pdfreader.obj)
       1.242   0.1        1.242   0.1     3090 std::operator==(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &) (msvcp60.dll)
       1.239   0.1        1.239   0.1     1114 std::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> >::basic_stringstream<char,struct std::char_traits<char>,class std::allocator<char> >(int) (msvcp60.dll)
       1.203   0.1        1.203   0.1     2990 std::operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,char) (msvcp60.dll)
       1.200   0.1        1.200   0.1    11676 std::_Tree<class PDF_Base::PDFName,struct std::pair<class PDF_Base::PDFName const ,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> >,struct std::map<class PDF_Base::PDFName,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject>,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Kfn,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Value(struct std::_Tree<class PDF_Base::PDFName,struct std::pair<class PDF_Base::PDFName const ,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> >,struct std::map<class PDF_Base::PDFName,class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject>,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObject> > >::_Kfn,struct std::less<class PDF_Base::PDFName>,class std::allocator<class PDF_Base::PDFSmartPtr<class PDF_Base::PDFObje

 

转贴请注明出处!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值