gcpp
一般會員

 發表:16 回覆:19 積分:7 註冊:2004-12-29
發送簡訊給我
|
是不是用錯了?或是什麼地方沒注意到?
做一次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
發送簡訊給我
|
抄別人的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
發送簡訊給我
|
不好意思,在下看錯了.....>
#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
發送簡訊給我
|
Compress可調的東西不多. Decompress的部分就是加大Z_ALLOCATE_BLOCK.
可以描訴你的用途嗎?
|
mustapha.wang
資深會員
   
 發表:89 回覆:409 積分:274 註冊:2002-03-13
發送簡訊給我
|
参好一下这篇
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=32639 
久病成良医--多试
千人之诺诺,不如一士之谔谔--兼听
------ 江上何人初见月,江月何年初照人
|
gcpp
一般會員

 發表:16 回覆:19 積分:7 註冊:2004-12-29
發送簡訊給我
|
不知mustapha.wang大大有C Builder的範例?
想試一下加殼的程式
Thanks
|