The following strings have been copied from a Mathematica notebook.

Install["d:/MyFiles/MyPrograms/QLink/QLink.exe"];

QLink created (May 2008 version) ! You can read information on QOpen, QRead, QRemoveDatabase, QRepair, QClose, QList, QSize, QPut, QGet, QSafeGet, QCheck and QRemove

QOpen["temp"];

(*writing*)

AbsoluteTiming[For[i=1,i<=1000000,i++,QPut["temp",ToString[i],ToString[RandomInteger[1000000]]]]]

{180.6875000,Null}

(*consequent reading*)

AbsoluteTiming[For[i=1,i<=1000000,i++,result=QGet["temp",ToString[i]]]]

{110.2343750,Null}

(*random reading*)

AbsoluteTiming[For[i=1,i<=1000000,i++,result=QGet["temp",ToString[RandomInteger[1000000]]]]]

{113.5000000,Null}

(*consequent rewriting*)

AbsoluteTiming[For[i=1,i<=1000000,i++,QPut["temp",ToString[i],ToString[RandomInteger[1000000]]]]]

{184.5937500,Null}

(*random rewriting*)

AbsoluteTiming[For[i=1,i<=1000000,i++,QPut["temp",ToString[i],ToString[RandomInteger[1000000]]]]]

{184.3906250,Null}

(*listing the keys*)

AbsoluteTiming[QList["temp"];]

{8.5000000,Null}

(*checking the entries*)

AbsoluteTiming[For[i=1,i<=1000000,i++,result=QCheck["temp",ToString[RandomInteger[2000000]]]]]

{116.2656250,Null}

(*safe random reading*)

AbsoluteTiming[For[i=1,i<=1000000,i++,result=QSafeGet["temp",ToString[RandomInteger[2000000]]]]]

{115.9375000,Null}

(*closing*)

QClose["temp"];

(*opening for reading*)

QRead["temp"];

(*random reading in read mode*)

AbsoluteTiming[For[i=1,i<=1000000,i++,result=QGet["temp",ToString[RandomInteger[1000000]]]]]

{111.8125000,Null}

-----------------------------------------------------

(* another example - skipping the initialization part *)

(*10 times larger entries*)

AbsoluteTiming[For[i=1,i<=1000000,i++,QPut["temp",ToString[i],StringJoin@@Table[ToString[RandomInteger[1000000]],{10}]]]]

{249.9843750,Null}

AbsoluteTiming[For[i=1,i<=1000000,i++,result=QGet["temp",ToString[i]]]]

{121.8750000,Null}

AbsoluteTiming[QList["temp"];]

{8.6718750,Null}

------------------------------------------------------

(* another example - skipping the initialization part *)

(*10 times more entries than in example 1*)

AbsoluteTiming[For[i=1,i<=10000000,i++,QPut["temp",ToString[i],ToString[RandomInteger[1000000]]]]]

{2292.8281250,Null}

(*consequent reading*)

AbsoluteTiming[For[i=1,i<=10000000,i++,result=QGet["temp",ToString[i]]]]

{1394.6718750,Null}

(*listing the keys*)

AbsoluteTiming[QList["temp"];]

{78.6718750,Null}