Made on Kubuntu
00001 #include <cstdio> 00002 #include <cstring> 00003 00004 #include "../../miniini.h" 00005 00007 00008 class ReadMark 00009 { 00010 public: 00011 ReadMark(int argc, char * argv [], bool stl) 00012 { 00013 for(int arg = 0; arg < argc; ++arg) 00014 { 00015 INIFile ini; 00016 if(!strcmp(argv[arg], "readstring")) 00017 { 00018 if(!ini.OpenFile("test/benchmark/string.ini")) return; 00019 else ini.Benchmark(BT_STRING, stl); 00020 } 00021 else if(!strcmp(argv[arg], "readint")) 00022 { 00023 if(!ini.OpenFile("test/benchmark/int.ini")) return; 00024 else ini.Benchmark(BT_INT, stl); 00025 } 00026 else if(!strcmp(argv[arg], "readfloat")) 00027 { 00028 if(!ini.OpenFile("test/benchmark/float.ini")) return; 00029 else ini.Benchmark(BT_FLOAT, stl); 00030 } 00031 else if(!strcmp(argv[arg], "readbool")) 00032 { 00033 if(!ini.OpenFile("test/benchmark/bool.ini")) return; 00034 else ini.Benchmark(BT_BOOL, stl); 00035 } 00036 else if(!strcmp(argv[arg], "readstringm")) 00037 { 00038 if(!ini.OpenFile("test/benchmark/stringm.ini")) return; 00039 else ini.Benchmark(BT_MULTISTRING, stl); 00040 } 00041 else if(!strcmp(argv[arg], "readintm")) 00042 { 00043 if(!ini.OpenFile("test/benchmark/intm.ini")) return; 00044 else ini.Benchmark(BT_MULTIINT, stl); 00045 } 00046 else if(!strcmp(argv[arg], "readfloatm")) 00047 { 00048 if(!ini.OpenFile("test/benchmark/floatm.ini")) return; 00049 else ini.Benchmark(BT_MULTIFLOAT, stl); 00050 } 00051 else if(!strcmp(argv[arg], "readboolm")) 00052 { 00053 if(!ini.OpenFile("test/benchmark/boolm.ini")) return; 00054 else ini.Benchmark(BT_MULTIBOOL, stl); 00055 } 00056 else if(!strcmp(argv[arg], "readstrings")) 00057 { 00058 if(!ini.OpenFile("test/benchmark/strings.ini")) return; 00059 else ini.Benchmark(BT_STRINGS, stl); 00060 } 00061 else if(!strcmp(argv[arg], "readints")) 00062 { 00063 if(!ini.OpenFile("test/benchmark/ints.ini")) return; 00064 else ini.Benchmark(BT_INTS, stl); 00065 } 00066 else if(!strcmp(argv[arg], "readfloats")) 00067 { 00068 if(!ini.OpenFile("test/benchmark/floats.ini")) return; 00069 else ini.Benchmark(BT_FLOATS, stl); 00070 } 00071 else if(!strcmp(argv[arg], "readbools")) 00072 { 00073 if(!ini.OpenFile("test/benchmark/bools.ini")) return; 00074 else ini.Benchmark(BT_BOOLS, stl); 00075 } 00076 else if(!strcmp(argv[arg], "readstringrules")) 00077 { 00078 if(!ini.OpenFile("test/benchmark/rulesmd2.ini")) return; 00079 else ini.Benchmark(BT_STRING, stl); 00080 } 00081 } 00082 } 00083 }; 00084 00085 void help() 00086 { 00087 puts 00088 ( 00089 "MiniINI benchmark\n" 00090 "Copyright (C) 2009-2010 Ferdinand Majerech\n" 00091 "Usage: bench [OPTIONS] [BENCHMARKS]\n" 00092 "Requires files to be present in test/benchmark for benchmarks to run\n" 00093 "Benchmarks and files they require:\n" 00094 " readstring string.ini\n" 00095 " readint int.ini\n" 00096 " readfloat float.ini\n" 00097 " readbool bool.ini\n" 00098 " readstringm stringm.ini\n" 00099 " readintm intm.ini\n" 00100 " readfloatm floatm.ini\n" 00101 " readboolm boolm.ini\n" 00102 " readstrings strings.ini\n" 00103 " readints ints.ini\n" 00104 " readfloats floats.ini\n" 00105 " readbools bools.ini\n" 00106 " readstringrules rulesmd2.ini\n" 00107 "Options:\n" 00108 " --stl STL API will be benchmarked instead of cstdlib API.\n" 00109 ); 00110 } 00111 00112 int main(int argc, char * argv []) 00113 { 00114 if(!strcmp(argv[1], "--stl")) 00115 { 00116 if(argc < 3) 00117 { 00118 help(); 00119 return -1; 00120 } 00121 ReadMark(argc - 2, argv + 2, true); 00122 } 00123 else 00124 { 00125 if(argc < 2) 00126 { 00127 help(); 00128 return -2; 00129 } 00130 ReadMark(argc - 1, argv + 1, false); 00131 } 00132 return 0; 00133 }