|
Тест скорости получения данных из ХП, функций и RDB$GET_CONTEXT
|
|||
---|---|---|---|
#18+
FB 3.0. Начал делать перевод некоторых ХП, возвращающих одно значение, во внутренние функции. Ради интереса решил померить их производительность. Что тестируется: 1. Получение одной строки и одного параметра из ХП, которая берет данные из RDB$GET_CONTEXT - SP$GET_ID_USER. 2. Получение одной строки и одного параметра из ХП, которая возвращает одно и то же число - SP$GET_ID_USER_CONST. 3. Функция без флага DETERMINISTIC, возвращающая значение из RDB$GET_CONTEXT - CONNECT_ID_USER_NOT_DETER. 4. Функция без флага DETERMINISTIC, возвращающая одно и то же число - CONNECT_ID_USER_CONST_NOT_DETER. 5. Функция c флагом DETERMINISTIC, возвращающая значение из RDB$GET_CONTEXT - CONNECT_ID_USER_DETER. 6. Функция c флагом DETERMINISTIC, возвращающая одно и то же число - CONNECT_ID_USER_CONST_DETER. 7. Получение значения из RDB$GET_CONTEXT. 8. Прямое присвоение значения. Скрипт метаданных: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.
Тест: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164.
Результаты теста: NAMEDIFF_WITH_LOOPDIFF_CLEAREMPTY LOOP24220SELECT FROM SP AS RDB$GET_CONTEXT3586033438SELECT FROM SP AS CONST2979827376GET FROM NOT DETERM INTERNAL FUNCTION AS RDB$GET_CONTEXT1915716735GET FROM NOT DETERM INTERNAL FUNCTION AS CONSTANT1426611844GET FROM DETERM INTERNAL FUNCTION AS RDB$GET_CONTEXT2875453GET FROM DETERM INTERNAL FUNCTION AS CONSTANT2828406GET FROM RDB$GET_CONTEXT55783156DIRECT SET2766344 Из статистики видно, что: 1. Выборка из ХП медленнее выборки из функции примерно в 2 раза. 2. Флаг DETERMINISTIC реально ускоряет присвоение, по скорости почти равняясь прямому присвоению. 3. Получение значения из RDB$GET_CONTEXT примерно в 10 раз медленнее прямого присвоения. 4. Получение значения из RDB$GET_CONTEXT через обертку в виде функции медленнее примерно в 5 раз. 5. Получение значения из RDB$GET_CONTEXT быстрее получения значения из функции примерно в 4 раза. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 09:16 |
|
Тест скорости получения данных из ХП, функций и RDB$GET_CONTEXT
|
|||
---|---|---|---|
#18+
CyberMax, это Таблоид тестировал года 3-4 назад. Правда тест у него случайно вышел, он всё таки за RDB$DATABASE aka DUAL боролся. Я такие вещи в пакеты складываю. Там есть процедуры и функции для присвоения и возврата констант/переменных. Заодно бонусом получаем типизацию переменных. Для функций возврата делаю DETERMINISTIC ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2018, 09:47 |
|
|
start [/forum/topic.php?fid=40&msg=39694702&tid=1561006]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 159ms |
0 / 0 |