S.l.e!ep.¢%

像打了激速一样,以四倍的速度运转,开心的工作
简单、开放、平等的公司文化;尊重个性、自由与个人价值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

STL::string vs STLPort::string

Posted on 2011-04-01 09:33 S.l.e!ep.¢% 阅读(1950) 评论(0)  编辑 收藏 引用 所属分类: C++
同样的代码, STLPort性能差不多多少,但支持线程安全


#include 
<stdio.h>
#include 
<pthread.h>
#include 
<stdlib.h>
#include 
<string>
#include 
<time.h>
#include 
<unistd.h>
#include 
<sys/timeb.h>

class CTimeElapsed
{
public:
    
void begin()
    
{
        ftime( 
&m_BeginTime );
    }


    
void end()
    
{
        ftime( 
&m_EndTime );
    }


    
void printTimeElapsed(const char* pszPrefix)
    
{
        
long t = ( m_EndTime.time - m_BeginTime.time ) * 1000 + ( m_EndTime.millitm - m_BeginTime.millitm );
        printf(
"%s Elapsed %ld ms \n", pszPrefix, t);
    }


private:
    timeb m_BeginTime;
    timeb m_EndTime;
}
;

int main()
{
    CTimeElapsed t;

    t.begin();
    
forint i = 0; i <= 50000; i++)
        std::
string str = "test string opt";
    t.end();
    t.printTimeElapsed(
"50000 string opt");

    t.begin();
    
forint i = 0; i <= 100000000; i++)
        std::
string str = "test string opt";
    t.end();
    t.printTimeElapsed(
"100000000 string opt");

    t.begin();
    
forint i = 0; i <= 200000000; i++)
        std::
string str = "test string opt";
    t.end();
    t.printTimeElapsed(
"200000000 string opt");

    
return 0;

}

STL
50000 string opt Elapsed 8 ms 
100000000 string opt Elapsed 15445 ms 
200000000 string opt Elapsed 30818 ms 

STLPort
50000 string opt Elapsed 7 ms 
100000000 string opt Elapsed 16570 ms 
200000000 string opt Elapsed 32291 ms 

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理