|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
graycode НеофитSQL Интересно, какого размера нужен дата сет, чтобы померять сравнительную производительность разных подходов? По хорошему нужна реальная асимптота, поэтому разного размера и самый главный момент, это то что в сложных системах, в которых параллельно работает много автоматических процессов, чистый эксперимент на производительность провести невозможно. "Невозможно сравнить скорость" это не не ответ для того, кто сказал что сделает быстрее :) Если разница в разы в десятке замеров в разных ситуациях. я думаю понятно какое из решений быстрее. А если разница проценты, то наверное одинаково. П.С. Удивился длине процедуры, я почему-то думал что решение циклом будет намного короче. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 19:09 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
НеофитSQL "Невозможно сравнить скорость" это не не ответ для того, кто сказал что сделает быстрее :) Если разница в разы в десятке замеров в разных ситуациях. я думаю понятно какое из решений быстрее. Я к тому, что полученные циферки времени выполнения нужно рассматривать критически. НеофитSQL П.С. Удивился длине процедуры, я почему-то думал что решение циклом будет намного короче. Перебрал варианты в лоб, можешь поискать закономерности и свернуть алгоритм в более короткий вид, главное чтобы в нем разобраться можно было)) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 19:46 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
НеофитSQL Обилие вложенных селектов и оконных функций кажется неэффективным Группировка пивотом позволила обойтись одной и той же сортировкой в аналитике на всех уровнях (order by x) , в результате чего у тебя только один WINDOW SORT и два WINDOW BUFFER. Мелкий баг - decode(s,'-',t,s) может быть null если диапазоны начинаются с target. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 19:58 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Stax цветов много, поетому пересечений может быть больше двух ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 19:59 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
graycode Вроде нигде с условиями не накосячил Код: plsql 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.
ctest.sql Код: plsql 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.
Код: plsql 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.
То есть у неофита та же производительность что у моего финального. У pl/sql та же производительность что у моего с аналитикой. Твой с аналитикой самый медленный - ну там слишком дофига сортировок. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 20:22 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Там еще в начале теста можно было вставить Код: plsql 1. 2. 3. 4. 5. 6. 7.
Чтоб показать что на ввод-вывод ресурсы не тратятся. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 20:25 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег, Как раз то о чем я говорил, подобные результаты нужно оценивать критически, эксперимент поставлен весьма криво, собственно и доверять этим результатам не стоит. PS: pl/sql вариант конечно нужно переписать без объектной обертки, не знаю сколько она отъедает. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 21:15 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
o! o! я тоже хочу PL/SQL сделать! Спасибо за тесты, очень образовательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 21:41 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
graycode, Поставь ровнее, я ж только за. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 21:43 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег, Ты сам взялся за тесты производительности)) Проводить тесты нужно независимо, т.е. не друг за другом, состояние системы перед каждым тестом нужно приводить в исходное состояние и очень желательно нивелировать влияние физических чтений исходной таблицы с диска, кроме того то что ты продемонстрировал вообще одного порядка, т.е. реально оно все выполнилось за одинаковое время, нужно было довести время выполнения хотя бы до трех минут (как известно чем больше N тем сильнее расходятся асимптоты). И ой, прошу прощения, не все вычистил, там кое что совсем лишнее, flag в сортировке не нужен для работы функции)) Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 21:51 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
graycode, В тесте важно избежать физических чтений таблицы и ухода в темп на сортировках. Можно было еще чуть минимизировать расходы на получения хеша. Всё остальное - лирика. В реальных данных все намного сложнее и это была лишь примитивная симуляция. Не та эта задача где PL/SQL блещет как ты ни крути. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 22:01 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег, Еще раз, ты своим экспериментом продемонстрировал ... ничего, т.е. получил одинаковое время (одного порядка) и даже мой самый медленный и корявый вариант по твоему эксперименту не отличается от остальных)) Хочешь реально оценить, поставь эксперимент грамотно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 22:05 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
graycode, А кто-то говорил про отличия на порядки? Если хочешь увидеть на порядки - потести варианты с коррелированными подзапросами. Ты волен делать какие угодно выводы на основании таймингов или показать свой тест, но подобная демагогия это слив. Можешь еще увеличивать число до 3e6, 5e6 и так далее пока не начнет вылезать в темп. И строить асимптоты. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 22:28 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
graycode, Пример когда PL/SQL рулит - 11567017 . Но там альтернатива была только модель. С графиками. Думаю тебе должно понравиться. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 22:40 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег, Слив, это методика эксперимента)) Вот с графиками красиво и ... PL/SQL рулит ... Переписал в виде пакета, без объектной обертки должно быть быстрее. Код: plsql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 23:14 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
graycode Переписал в виде пакета Пакет бы пригодился когда понадобилось бы параллелить функцию и объявлять strong ref cursor. ;) graycode без объектной обертки должно быть быстрее Теперь на уровне ведущих эскуэльных подходов. Мир, равенство, братсво. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 23:35 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег, Я твой тест из другого топика скоммуниздил и переделал под нашу задачу и что то не получаются твои результаты, ты бы позапускал и не один раз и на разном количестве записей ... Код: plsql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2020, 23:47 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег, У тебя в том топике еще и bulk collect ... НеофитSQL я тоже хочу PL/SQL сделать! Сделай не пайплайнед, а как у Кобанчег , в топике на который он ссылку дал. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 00:08 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
graycode Кобанчег, У тебя в том топике еще и bulk collect ... НеофитSQL я тоже хочу PL/SQL сделать! Сделай не пайплайнед, а как у Кобанчег , в топике на который он ссылку дал. Я уже написал пайплайном, на вашем примере. Код: plsql 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.
Долго ломал голову как сделать условный pipe row (чтобы пустые строчки не плевало), но так и не смог. Поэтому в правой части много повторяющегося кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 02:08 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Без пайплайна возможно быстрее. Надеюсь Кобанчег или другие бенчмаркнут. Код: plsql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 02:25 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
НеофитSQL Без пайплайна возможно быстрее. Надеюсь Кобанчег или другие бенчмаркнут. С пайплайном мы по одной строчке перегоняем входящий отсортированный набор данных в выходной набор данных по которому потом еще идет суммирование, если весь входной набор отправить в коллекцию bulk collect-ом, обработать эту коллекцию не создавая новую и отдать ее в качестве результата, должно получиться быстрее. PS: в реальных задачах нужно учитывать что коллекция будет содержать все данные таблицы и находиться она будет в UGA. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 12:47 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
graycode пайплайном мы по одной строчке перегоняем входящий отсортированный набор данных в выходной набор данных Точно? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 13:03 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
andrey_anonymous Точно? :) Мы точно не ползаем по исходному набору и не модифицируем его, мы читаем по строке, формируем новую в PL/SQL и отдаем обратно в SQL, где поверх еще идет суммирование, в SQL решениях одно исполняющее ядро SQL и возможность по максимуму использовать исходный набор данных не перекачивая его через сторонние структуры построчно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 14:17 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
graycode НеофитSQL Без пайплайна возможно быстрее. Надеюсь Кобанчег или другие бенчмаркнут. С пайплайном мы по одной строчке перегоняем входящий отсортированный набор данных в выходной набор данных по которому потом еще идет суммирование, если весь входной набор отправить в коллекцию bulk collect-ом, обработать эту коллекцию не создавая новую и отдать ее в качестве результата, должно получиться быстрее. PS: в реальных задачах нужно учитывать что коллекция будет содержать все данные таблицы и находиться она будет в UGA. Если набор данных ужЕ в памяти, быстрее вызвать внешнюю функцию на сях :) по поводу обработки коллекции in-place, там довольно неочевидная (для меня) оценка размера результата. Вроде бы худший случай это 2N если нужно выводить незакрашенные интервалы, и 2N-1 если их можно пропускать. (N- число строк в исходной таблице) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 14:25 |
|
Пятничная задача: Красное и черное
|
|||
---|---|---|---|
#18+
Кобанчег, Погонял на таблице разного размера и генерации, однозначного победителя из трех вариантов kaban pattern matching, neofit, graycode plsql не выявил, лидером оказывается то один то другой то третий, причем pattern matching всегда очень близко к pl/sql варианту, neofit уходит то в плюс то в минус процентов на двадцать. Честно говоря от pl/sql варианта ожидал лучших результатов. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2020, 14:28 |
|
|
start [/forum/topic.php?fid=52&msg=40019137&tid=1880676]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
89ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 187ms |
0 / 0 |