Advertisement
Guest User

Untitled

a guest
Aug 5th, 2016
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.33 KB | None | 0 0
  1. unit UnitForm;
  2.  
  3. interface
  4.  
  5. uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, SynLZ, SynCommons;
  8.  
  9. type
  10.   TTest = class(TForm)
  11.     Compress: TButton;
  12.     Uncompress: TButton;
  13.     chkSynLZ: TCheckBox;
  14.     mmo1: TMemo;
  15.     procedure CompressClick(Sender: TObject);
  16.     procedure UncompressClick(Sender: TObject);
  17.   private
  18.     { Private declarations }
  19.   public
  20.     { Public declarations }
  21.   end;
  22.  
  23. var
  24.   Test: TTest;
  25.  
  26. implementation
  27.  
  28. {$R *.dfm}
  29.  
  30. {$ifdef WIN64}
  31. uses Snappy;
  32. {$endif}
  33.  
  34. const
  35.   COUNT = 100000;
  36.   FILENAME = 'partials'; //test' partials'; //'citylots'; //'THESAUR';
  37.   FILEEXT = 'json'; //log' json'; // 'txt';
  38.  
  39. procedure TTest.CompressClick(Sender: TObject); // I did a test with 1GB vhd file, works 100%
  40. var
  41. {$ifdef WIN64}
  42.   env: psnappy_env;
  43. {$endif}
  44.   StreamIN, StreamOUT: TMemoryStream;
  45.   outlen: int64;
  46.   timer: TPrecisionTimer;
  47.   s: string;
  48.   i: integer;
  49.   synlz: boolean;
  50. begin
  51.   synlz := chkSynLZ.Checked;
  52.   if synlz then
  53.     s := 'SynLZ'
  54.   else
  55.     s := 'Snappy';
  56.   StreamIN := TMemoryStream.Create;
  57.   StreamOUT := TMemoryStream.Create;
  58.   StreamIN.LoadFromFile('z:\' + FILENAME + '.' + FILEEXT);
  59.   StreamOUT.Size := StreamIN.Size * 2;
  60.   try
  61.     outlen := 0;
  62.     timer.Start;
  63.     for i := 1 to COUNT do
  64.       if synlz then
  65.         outlen := SynLZCompress1(StreamIn.Memory, StreamIN.Size, streamOut.Memory)
  66. {$ifdef WIN64}
  67.       else begin
  68.         New(env);
  69.         snappy_init_env(env);
  70.         snappy_compress(env, StreamIN.Memory, StreamIN.Size, StreamOUT.Memory, @outlen);
  71.         snappy_free_env(env);
  72.         Dispose(env);
  73.       end;
  74. {$endif};
  75.     mmo1.Lines.Add(format('%s compress in %s, size=%d, %s/s',
  76.       [s, timer.Stop, outlen * COUNT, KB(timer.PerSec(outlen * COUNT))]));
  77.     StreamOUT.Size := outlen;
  78.   finally
  79.     StreamIN.Free;
  80.     StreamOUT.SaveToFile('z:\' + FILENAME + '.' + s);
  81.     StreamOUT.Free;
  82.   end;
  83. end;
  84.  
  85. procedure TTest.UncompressClick(Sender: TObject);
  86. var
  87. {$ifdef WIN64}
  88.   env: psnappy_env;
  89. {$endif}
  90.   StreamIN, StreamOUT: TMemoryStream;
  91.   outlen: int64;
  92.   timer: TPrecisionTimer;
  93.   s: string;
  94.   i: integer;
  95.   synlz: boolean;
  96. begin
  97.   synlz := chkSynLZ.Checked;
  98.   if synlz then
  99.     s := 'SynLZ'
  100.   else
  101.     s := 'Snappy';
  102.   StreamIN := TMemoryStream.Create;
  103.   StreamOUT := TMemoryStream.Create;
  104.   StreamIN.LoadFromFile('z:\' + FILENAME + '.' + s);
  105.   if chkSynLZ.Checked then
  106.     outlen := SynLZdecompressdestlen(StreamIN.Memory)
  107. {$ifdef WIN64}
  108.   else
  109.     snappy_uncompressed_length(StreamIN.Memory, StreamIN.Size, @outlen)
  110. {$endif};
  111.   StreamOUT.Size := outlen;
  112.   try
  113.     timer.Start;
  114.     for i := 1 to COUNT do
  115.       if synlz then
  116.         outlen := SynLZDecompress1(StreamIn.Memory, StreamIN.Size, streamOut.Memory)
  117. {$ifdef WIN64}
  118.       else begin
  119.         New(env);
  120.         snappy_init_env(env);
  121.         snappy_uncompress(StreamIN.Memory, StreamIN.Size, StreamOUT.Memory);
  122.         snappy_free_env(env);
  123.         Dispose(env);
  124.       end;
  125. {$endif};
  126.     mmo1.Lines.Add(format('%s uncompress in %s, size=%d, %s/s',
  127.       [s, timer.Stop, outlen * COUNT, KB(timer.PerSec(outlen * COUNT))]));
  128.   finally
  129.     StreamIN.Free;
  130.     StreamOUT.SaveToFile('z:\' + FILENAME + '-' + s + '.' + FILEEXT);
  131.     StreamOUT.Free;
  132.   end;
  133. end;
  134.  
  135. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement