unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
FBits: TBits;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
FBits := TBits.Create;
FBits.Size := 99999999; // 8位号码 千万级 类填充索引
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil(FBits);
end;procedure TForm1.Button1Click(Sender: TObject);
const
testCount = 1000000; //百万个测试
var
numberList: array of integer;
numberFlagList: array of boolean;
i: integer;
bt: DWORD;
begin
Randomize;
setlength(numberList, testCount);
setlength(numberFlagList, testCount);
for i := 0 to testCount - 1 do
begin
numberList[i] := Random(99999999);
end; bt := GetTickCount;
for i := 0 to testCount - 1 do
numberFlagList[i] := FBits.Bits[numberList[i]] ; ShowMessage(IntToStr(GetTickCount-bt));
// 百万个测试不会 超过 1秒的
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
FBits: TBits;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
FBits := TBits.Create;
FBits.Size := 99999999; // 8位号码 千万级 类填充索引
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil(FBits);
end;procedure TForm1.Button1Click(Sender: TObject);
const
testCount = 1000000; //百万个测试
var
numberList: array of integer;
numberFlagList: array of boolean;
i: integer;
bt: DWORD;
begin
Randomize;
setlength(numberList, testCount);
setlength(numberFlagList, testCount);
for i := 0 to testCount - 1 do
begin
numberList[i] := Random(99999999);
end; bt := GetTickCount;
for i := 0 to testCount - 1 do
numberFlagList[i] := FBits.Bits[numberList[i]] ; ShowMessage(IntToStr(GetTickCount-bt));
// 百万个测试不会 超过 1秒的
end;end.
因为 那是 直接定位
例如 查 8186045
FBits.Bits[8186045]