// // g++ -std=c++11 -Wall -g speedtest.cpp -I/usr/local/include // -I ${ORACLE_HOME}/rdbms/public -L ${ORACLE_HOME}/lib -lclntsh // -o speedtest && ./speedtest // #include #include #include #include #include #include #define OTL_ORA12C #define OTL_STL #define OTL_EXCEPTION_STM_TEXT_SIZE 32767 #define OTL_ORA_UTF8 #if 0 #define STRINGIFY(x) #x #define TOSTRING(x) STRINGIFY(x) #define OTL_TRACE_LEVEL 0xff #define OTL_TRACE_STREAM cerr #define OTL_TRACE_LINE_PREFIX "MY OTL TRACE " __FILE__ ":" TOSTRING(__LINE__) " ==> " #endif using namespace std; #include // include the OTL 4.0 header file class data { public: data(size_t nrows = 1) : c_numrows(nrows), c_strlen(8) { genint(id); genstr(name); gendate(aod); gencurr(curr1); gendouble(price1); gencurr(curr2); gendouble(price2); } void print(void); string pdate(struct tm); size_t c_numrows; vector id; vector name; vector aod; vector curr1; vector price1; vector curr2; vector price2; private: size_t c_strlen; void gencurr(vector &); void genstr(vector &); void genint(vector &); void gendouble(vector &); void gendate(vector &); }; void data::print(void) { cout << "Num of rows: " << c_numrows << '\n'; for(size_t n=0; n & cvec) { for(size_t n=0; n & vstr) { for(size_t n=0; n & vint) { for(size_t n=0; n & vdouble) { for(size_t n=0; n & vtm) { for(size_t n=0; n, :name, :aod, :curr1, :price1, :curr2, :price2)", db // connect object ); for(size_t i=0; i= 2 )? argv[1] : "") << endl; //------------------------------------------------ data d(argc >= 2 ? atoi(argv[1]) : 1); //d.print(); //------------------------------------------------ int i = argc >= 3 ? atoi(argv[2])-1 : 0; cout << setw(8) << i+1 << " " << setw(10) << d.id[i] << " - " << d.name[i] << " - " << d.pdate(d.aod[i]) << " - " << d.curr1[i] << " - " << setw(10) << d.price1[i] << " - " << d.curr2[i] << " - " << setw(10) << d.price2[i] << endl; //------------------------------------------------ otl_connect db; // connect object otl_connect::otl_initialize(); // initialize OCI environment try { db.rlogon("???/???@???"); // connect to Oracle long rpc; rpc = otl_cursor::direct_exec(db, "alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'"); cout << "Alter session : " << rpc << endl; rpc = otl_cursor::direct_exec(db, "truncate table speedtest"); cout << "Speedtest truncated : " << rpc << endl; time_t t1 = time(NULL); insert(db, d); time_t t2 = time(NULL); cout << "Runtime: " << t2 - t1 << endl; db.commit(); } catch(otl_exception& p) { // intercept OTL exceptions cerr << p.msg <