• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Simple is beautifull

            還需要副標(biāo)題嗎?

            導(dǎo)航

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            統(tǒng)計(jì)

            常用鏈接

            留言簿(2)

            隨筆檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            2006年3月31日 #

            為什么Python的性能比較好呢?

            在vckbase上看到有討論這樣一個(gè)問(wèn)題:
            http://blog.vckbase.com/jzhang/archive/2006/03/28/18807.html
            CSDN的朋友參考了Python的實(shí)現(xiàn)源碼給出有如下的解答:
            http://blog.csdn.net/imjj/archive/2006/03/31/645163.aspx?Pending=true
            性能上已經(jīng)比Python好了,但是該解答畢竟是針對(duì)了具體的應(yīng)用,比如定死了hash桶的大小之類的。

            我也湊熱鬧給了一個(gè)實(shí)現(xiàn),只使用標(biāo)準(zhǔn)C++的一些算法解決此問(wèn)題,性能上還是沒有Python好,但是已經(jīng)非常接近了:
            D:\test\pytest>python test.py
            2006-03-31 14:59:19.348000
            2006-03-31 14:59:22.963000

            D:\test\pytest>cpptest
            經(jīng)過(guò)了4025.7888毫秒

            實(shí)現(xiàn):
            #include <windows.h>??????//? just for time counting

            #include <list>
            #include <string>
            #include <fstream>
            #include <algorithm>

            using namespace std;
            int main( void )
            {
            ?__int64 t1, t2;
            ?GetSystemTimeAsFileTime( (LPFILETIME)&t1 );

            ?list<string> emails;
            ?ifstream infile("email2.txt");
            ?ofstream oufile("email_cpp.txt");
            ?copy( istream_iterator<string>(infile), istream_iterator<string>(), back_inserter(emails) );
            ?emails.unique();
            ?ofstream outfile( "email_cpp.txt" );
            ?copy( emails.begin(), emails.end(), ostream_iterator<string>(outfile,"\n") );

            ?GetSystemTimeAsFileTime( (LPFILETIME)&t2 );
            ?printf( "經(jīng)過(guò)了%I64d.%04I64d毫秒\n", (t2-t1)/10000, (t2-t1)%10000 );
            }
            對(duì)比的其他兩個(gè)實(shí)現(xiàn):
            1、vector + sort + unique
            2、set
            最后還是我的這個(gè)實(shí)現(xiàn)好一點(diǎn):)
            PS:編譯器用的是VC2005

            再PS,寫了上面那個(gè)PS之后突然想看看VC2003怎么樣,于是測(cè)試一下,驚人的發(fā)現(xiàn):
            D:\test\pytest>cpptest2
            經(jīng)過(guò)了3234.6512毫秒
            速度已經(jīng)超越了Python
            .^_^。滿心歡喜結(jié)束這個(gè)討論旅程

            posted @ 2006-03-31 15:28 音樂(lè)蟲子 閱讀(2671) | 評(píng)論 (4)編輯 收藏

            2006年2月12日 #

            類型選擇

            // test7.cpp : Defines the entry point for the console application.
            //

            #include "stdafx.h"

            using namespace std;
            using namespace boost;

            namespace
            {
             template<typename T> char checkSize(T*);
             template<typename T> long checkSize(...);
            }

            template<typename FIRST, typename SECOND>
            struct SameType
            {
             enum{value = sizeof(char) == sizeof(checkSize<FIRST>((SECOND*)0)) };
            };


            class IFoo
            {
            public:
             virtual void bar() = 0;
            };

            class Foo: public IFoo
            {
            public:
             virtual void bar(){ cout<<"bar()"<<endl; };
            };

            template<int>
            class TypeSelect
            {
            public:
             template<typename T>
              TypeSelect(T& r){}
            };

            template<> class TypeSelect<true>
            {
            public:
             template<typename T>
              TypeSelect(T& r)
             {
              r.bar();
             } 
            };

            template<class T> void func( T& t )
            {
             (TypeSelect<SameType<IFoo, T>::value>(t));          
            }

            int main()
            {
             Foo x;
             int y;
             func(x);
             func(y);
            }

            posted @ 2006-02-12 11:27 音樂(lè)蟲子 閱讀(408) | 評(píng)論 (0)編輯 收藏

            2006年2月9日 #

            boost::thread 中使用類成員作為線程入口

            just mark it:)

            boost::thread trd1(boost::bind(&TheClass::theMember), &obj);

            posted @ 2006-02-09 17:08 音樂(lè)蟲子 閱讀(845) | 評(píng)論 (5)編輯 收藏

            僅列出標(biāo)題  
            亚洲色婷婷综合久久| 久久久精品久久久久久| 少妇精品久久久一区二区三区| 中文字幕成人精品久久不卡| 久久大香香蕉国产| 91麻精品国产91久久久久| 久久99久久成人免费播放| 99精品国产免费久久久久久下载 | 伊人久久大香线蕉综合影院首页 | 91久久精品国产成人久久| 久久被窝电影亚洲爽爽爽| 国产免费福利体检区久久| 久久人人爽人人澡人人高潮AV| 亚洲一级Av无码毛片久久精品| 久久91精品国产91| 国产精品99久久精品| 人妻少妇精品久久| 久久99国产精品久久久| 久久久久亚洲AV无码专区首JN| 1000部精品久久久久久久久| 久久99热这里只有精品国产| 欧美伊人久久大香线蕉综合| 久久国产免费直播| 久久精品国产亚洲网站| 亚洲AV无码久久精品蜜桃| 人人狠狠综合久久亚洲高清| 中文字幕亚洲综合久久| 无码精品久久久久久人妻中字| 精品久久久久久无码不卡| 国产成人无码精品久久久免费| 久久国产色av免费看| 久久精品成人免费观看97| 中文字幕热久久久久久久| 综合久久精品色| 欧美亚洲另类久久综合婷婷| 伊人久久大香线蕉精品| 伊人久久免费视频| 色综合色天天久久婷婷基地| 曰曰摸天天摸人人看久久久| 国产精品久久久天天影视香蕉 | 久久精品一区二区影院|