📄 testindex.cs
字号:
using System;using FastDbNet;using System.Diagnostics;namespace FastDbNetTest { public class Test { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) { int rc, i, n; uint oid = 0; int nRecords = 200000; FastDbConnection connection = new FastDbConnection("test"); connection.InitDbSize = FastDbConnection.DefaultInitDatabaseSize*2; connection.InitIdxSize = FastDbConnection.DefaultInitIndexSize*2; connection.ExtensionQuantum = FastDbConnection.DefaultExtensionQuantum*2; connection.Open(); FastDbFields fields = new FastDbFields(); fields.Add("int_field", CLI.FieldType.cli_int8, CLI.FieldFlags.cli_hashed); fields.Add("str_field", CLI.FieldType.cli_asciiz, CLI.FieldFlags.cli_hashed); rc = connection.CreateTable("test", fields); if (rc < 0) Console.WriteLine("cli_create_table: {0}", CLI.CliErrorToStr(rc)); FastDbCommand command = connection.CreateCommand("insert into test"); command.Fields.Assign(fields); // You could also do: command.Describe(); DateTime start = DateTime.Now; long key = 1999; for (i = 0; i < nRecords; i++) { key = (3141592621L * key + 2718281829L) % 1000000007L; command.Fields[0].asInt64 = key; command.Fields[1].asString = key.ToString(); oid = command.Insert(); } connection.Commit(); Console.WriteLine("Elapsed time for inserting {0} records: {1:F2} (speed: {2:F2})", nRecords, (DateTime.Now - start).TotalSeconds, nRecords / (DateTime.Now - start).TotalSeconds); FastDbCommand command1 = connection.CreateCommand("select * from test where int_field = %key"); FastDbCommand command2 = connection.CreateCommand("select * from test where str_field = %key"); command1.Parameters.Add("key", CLI.FieldType.cli_int8); command2.Parameters.Add("key", CLI.FieldType.cli_asciiz); command1.Fields.Assign(fields); command2.Fields.Assign(fields); int rc1; int rc2; key = 1999; start = System.DateTime.Now; for (i = 0; i < nRecords; i++) { key = (3141592621L * key + 2718281829L) % 1000000007L; command1.Parameters[0].asInt64 = key; command2.Parameters[0].asString = key.ToString(); rc1 = command1.Execute(); rc2 = command2.Execute(); } System.Console.WriteLine("Elapsed time for performing {0} index searches {1:F2} (speed: {2:F2})", nRecords * 2, (DateTime.Now - start).TotalSeconds, nRecords * 2 / (DateTime.Now - start).TotalSeconds); command.SQL = "select * from test"; start = System.DateTime.Now; n = command.Execute(); for(i=0; i < n; i++) { command.Next(); } Console.WriteLine(String.Format("Elapsed time for iteration through {0} records: {1:F2} (speed: {2:F2})", nRecords, (DateTime.Now - start).TotalSeconds, nRecords / (DateTime.Now - start).TotalSeconds)); start = System.DateTime.Now; /* key = 1999; for (i = 0; i < nRecords; i++) { key = (3141592621L * key + 2718281829L) % 1000000007L; Record rec = (Record) intIndex.Get(new Key(key)); Record removed = (Record)intIndex.Remove(new Key(key)); Debug.Assert(removed == rec); strIndex.Remove(new Key(System.Convert.ToString(key)), rec); rec.Deallocate(); }*/ command.Execute(true); command.Delete(); connection.Commit(); System.Console.WriteLine("Elapsed time for deleting {0} records: {1:F2} (speed: {2:F2})", nRecords, (DateTime.Now - start).TotalSeconds, nRecords/(DateTime.Now - start).TotalSeconds); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -