全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1453
推到 Plurk!
推到 Facebook!

請問zlib速度好像很慢

尚未結案
gcpp
一般會員


發表:16
回覆:19
積分:7
註冊:2004-12-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-23 19:38:19 IP:61.219.xxx.xxx 未訂閱
是不是用錯了?或是什麼地方沒注意到? 做一次2M大小的檔案compress要0.1秒. 照理說decompress會更快才對,怎要0.4秒? CPU 900MHz 512M ram. 取自http://delphi.ktop.com.tw/topic.php?topic_id=15671的文章
 
//---------------------------------------------------------------------------
#include 
#pragma hdrstop
#include "TZlib.h"
#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
volatile bool bStress = false;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        LARGE_INTEGER FreqCount;
        LARGE_INTEGER TC, TC1, TC2;
        double dTime;
        AnsiString asTime;            TMemoryStream *TargetStream, *ResultStream;            TZLibDecompressionStream *Decompress;
        TZLibCompressionStream *Compress;            TargetStream = new TMemoryStream;            TargetStream->LoadFromFile("raw.dat");            if (TargetStream->Size == 0)
        {
                delete TargetStream;
                return;
        }
        ResultStream = new TMemoryStream;
        Compress = new TZLibCompressionStream;
        Decompress = new TZLibDecompressionStream;            Label3->Caption = Compress->ZLibVersion();            QueryPerformanceFrequency(&FreqCount);
        QueryPerformanceCounter(&TC1);            Compress->Compress(TargetStream, ResultStream, 1);            QueryPerformanceCounter(&TC2);            TC.QuadPart = TC2.QuadPart - TC1.QuadPart;
        dTime = (double)(TC.QuadPart)/(FreqCount.QuadPart);
        asTime.sprintf("%f",dTime);
        Label1->Caption = asTime;            ResultStream->SaveToFile("Ziped.dat");            TargetStream->Clear();            QueryPerformanceCounter(&TC1);
        Decompress->Decompress(ResultStream, TargetStream);
        QueryPerformanceCounter(&TC2);            TC.QuadPart = TC2.QuadPart - TC1.QuadPart;
        dTime = (double)(TC.QuadPart)/(FreqCount.QuadPart);
        asTime.sprintf("%f",dTime);
        Label2->Caption = asTime;            TargetStream->SaveToFile("UnZiped.dat");            delete Decompress;
        delete Compress;
        delete TargetStream;
        delete ResultStream;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
        TMemoryStream *TargetStream, *ResultStream;            TZLibDecompressionStream *Decompress;
        TZLibCompressionStream *Compress;            TargetStream = new TMemoryStream;            TargetStream->LoadFromFile("raw.dat");            if (TargetStream->Size == 0)
        {
                delete TargetStream;
                return;
        }            ResultStream = new TMemoryStream;
        Compress = new TZLibCompressionStream;
        Decompress = new TZLibDecompressionStream;            bStress = (bStress == false);
        if (bStress)
        {        Button2->Caption = "Stress Enable";                }
        else
        {        Button2->Caption = "Stress Disable";        }
        
        while (bStress)
        {
                Compress->Compress(TargetStream, ResultStream, 3);
                Decompress->Decompress(ResultStream, TargetStream);
        }            delete Decompress;
        delete Compress;
        delete TargetStream;
        delete ResultStream;
}
//--------------------------------------------------------------------------- 
發表人 - gcpp 於 2005/03/23 19:40:59
Albertz
初階會員


發表:2
回覆:57
積分:31
註冊:2002-09-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-23 20:19:15 IP:211.20.xxx.xxx 未訂閱
抄別人的CODE請註明"正確"出處, 害我以為多了一個雙胞胎兄弟, 連寫的東西都一樣 < href="http://delphi.ktop.com.tw/topic.php?topic_id=44698">http://delphi.ktop.com.tw/topic.php?topic_id=44698 如果要加快速度, 把 TZLIB.H 的 Z_ALLOCATE_BLOCK 加到 1MB 就可以了. #define Z_ALLOCATE_BLOCK (1024*1024)
gcpp
一般會員


發表:16
回覆:19
積分:7
註冊:2004-12-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-23 20:42:40 IP:61.219.xxx.xxx 未訂閱
不好意思,在下看錯了.....>  #define Z_ALLOCATE_BLOCK (1024*1024) 那這個的用法是加愈多愈快呢? Decompress->Decompress(ResultStream, TargetStream); 是有變快一些,但 Compress->Compress(TargetStream, ResultStream, 1);是沒差多少.. 是否有別的地方可以調嗎? 請指教一下.... 發表人 - gcpp 於 2005/03/23 20:55:29
Albertz
初階會員


發表:2
回覆:57
積分:31
註冊:2002-09-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-23 23:31:11 IP:61.230.xxx.xxx 未訂閱
Compress可調的東西不多. Decompress的部分就是加大Z_ALLOCATE_BLOCK. 可以描訴你的用途嗎?
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-24 09:27:02 IP:218.80.xxx.xxx 未訂閱
参好一下这篇 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=32639     久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人
gcpp
一般會員


發表:16
回覆:19
積分:7
註冊:2004-12-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-24 16:16:30 IP:61.219.xxx.xxx 未訂閱
不知mustapha.wang大大有C Builder的範例? 想試一下加殼的程式 Thanks
系統時間:2024-04-25 12:39:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!