谁说Delphi没有哈希
谁说Delphi没有哈希?--Delphi中,TStringList和THashedStringList的性能对比
曾经看到很多人在嚷嚷Delphi没有哈希表,这些人的动手意识姑且不论,却还有很多人以此来证明Delphi比别的语言垃圾,实在是...
好,牢骚打住,转接正题。
TStringList是我们常用的字符串列表类型,用法就不在这里赘述,但是,在数据其项数增多时,其搜索(主要是name/key搜索和indexof搜索)性能会急剧下降,原因是TStringList的内部存储使用了链表形式,而搜索操作使用了循环遍历方式。
值得高兴的是,在iniFiles单元,Delphi为我们提供了THashedStringList类型,即,经过哈希处理的TStringList,它继承自TStringList,只是对搜索方法进行了优化,因此,我们完全可以放心的在大量字符串搜索的时候使用它来代替TStringList,而需要改变的只是在:=的后面用THashedStringList.create来代替TStringList.create,但其速度却提高了一个数量级。
为了显示两者间性能的差距,我写了几个简单的语句来测试他们各自的特性。
unit ufrmMainForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, StrUtils,IniFiles;
type
TForm1 = class(TForm)
btn1: TButton;
mmo1: TMemo;
procedure btn1Click(Sender: TObject);
private
...{ Private declarations }
public
procedure testTHashStringList;
procedure testTStringList;
...{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses DateUtils;
...{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
begin
testTStringList;
mmo1.Lines.Add('--------------------');
testTHashStringList;
end;
procedure TForm1.testTHashStringList;
var
hsl: THashedStrin
相关文档:
DECLARE
TYPE TY_QUECUR IS REF CURSOR;
CUR_COLUMNS TY_QUECUR;
SQLCMD VARCHAR(500);
TABNAME VARCHAR(20);
COLNAME VARCHAR(50);
COLTYPE VARCHAR(20);
COLCOMMENT VARCHAR2(50);
COLLENGTH INTEGER;
COLPRECISION INTEGER; ......
获得网卡的MAC地址在很多地方都有很大的用处,下面的函数以XX-XX-XX-XX-XX-XX 的格式返回远程或本地机器的MAC地址。
Function to return the MAC address of a remote or local machine in the format XX-XX-XX-XX-XX-XX
返回的MAC地址是一个能用在多个方面的唯一标识。使用方法:
ShowMessage(GetMacAddress( ......
一年前开发了一个MIDAS的程序,最近修改服务端,可是这个服务无法注册,最后终于找到了解决办法,这个相关文章如下:(算是备份吧)
(一)MIDAS是什么?
Delphi中MIDAS到底是什么呢?和他相关组件是什么呢?
MIDAS(Multitiered Distributed Application Services)多层分布式应用服务。
Delphi所提出 ......
原来是要在FormCreate中加入以下代码:
procedure TTntForm1.TntFormCreate(Sender: TObject);
begin
//这句很关键.对于平台的支持.
if Win32Platform = VER_PLATFORM_WIN32_NT then
Font.Name := 'MS Shell Dlg 2'
else
Font.Name := 'MS Shell Dlg';
......
URL: http://edn.embarcadero.com/article/27568
Abstract: Delphi 6 introduces support for COM+ object pooling, which can provide significant performance improvements under some circumstances. We take a look at Delphi 6s object pooling support. By Vincent Parrett.
Typically, when a client appl ......