test-sqlite3.nut 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. local db = SQLite3(":memory:");
  2. print(db);
  3. class MultiplyDecimal3 {
  4. first = null;
  5. second = null;
  6. thirdy = null;
  7. constructor(){
  8. first = Decimal(0);
  9. second = Decimal(0);
  10. thirdy = Decimal(0);
  11. }
  12. function reset(){
  13. first.set(0);
  14. second.set(0);
  15. thirdy.set(0);
  16. }
  17. function doIt(){
  18. return (first * second * thirdy).tostring();
  19. }
  20. }
  21. local function multiply3_MultiplyDecimal3(ctx,a,b,c){
  22. //print(ctx.user_data());
  23. //local m3 = Multiply3();
  24. local m3 = ctx.user_data();
  25. m3.reset();
  26. m3.first.set(a);
  27. m3.second.set(b);
  28. m3.thirdy.set(c);
  29. ctx.result_text(m3.doIt());
  30. //ctx.result_double(a*b*c);
  31. }
  32. class Multiply3 {
  33. first = null;
  34. second = null;
  35. thirdy = null;
  36. constructor(){
  37. reset();
  38. }
  39. function reset(){
  40. first = second = thirdy = 0.0;
  41. }
  42. function doIt(){
  43. return first * second * thirdy;
  44. }
  45. }
  46. local function multiply3_Multiply3(ctx,a,b,c){
  47. //print(ctx.user_data());
  48. //local m3 = Multiply3();
  49. local m3 = ctx.user_data();
  50. m3.reset();
  51. m3.first = a;
  52. m3.second = b;
  53. m3.thirdy = c;
  54. ctx.result_double(m3.doIt());
  55. //ctx.result_double(a*b*c);
  56. }
  57. local function multiply3(ctx,a,b,c){
  58. //print(ctx.user_data());
  59. //ctx.result_double(a*b*c);
  60. }
  61. //db.create_function("multiply3",3, multiply3_MultiplyDecimal3, MultiplyDecimal3());
  62. //db.create_function("multiply3",3, multiply3_Multiply3, Multiply3());
  63. db.create_function("multiply3",3, multiply3);
  64. local sql = "select 1.2*2.5*3.6;";
  65. local sql_squilu = "select multiply3(1.2,2.5,3.6);";
  66. local stmt = db.prepare(sql);
  67. local stmt_squilu = db.prepare(sql_squilu);
  68. print(db.exec_get_one(sql_squilu));
  69. local count = 100000;
  70. local now = os.clock();
  71. for(local i=0; i<count; ++i){
  72. local val = db.exec_get_one(sql_squilu);
  73. }
  74. print("SquiLu function took:", os.clock() -now);
  75. now = os.clock();
  76. for(local i=0; i<count; ++i){
  77. local val = db.exec_get_one(sql);
  78. }
  79. print("SQL function took:", os.clock() -now);
  80. stmt_squilu.reset();
  81. stmt_squilu.step()
  82. print(stmt_squilu.col(0));
  83. now = os.clock();
  84. for(local i=0; i<count; ++i){
  85. stmt_squilu.reset();
  86. stmt_squilu.step()
  87. local val = stmt_squilu.col(0);
  88. }
  89. print("SquiLu SQL prepared function took:", os.clock() -now);
  90. now = os.clock();
  91. for(local i=0; i<count; ++i){
  92. stmt.reset();
  93. stmt.step()
  94. local val = stmt.col(0);
  95. }
  96. print("SQL prepared function took:", os.clock() -now);
  97. stmt.finalize();
  98. stmt_squilu.finalize();
  99. db.close();