Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Какой язык PG быстрее
|
|||
|---|---|---|---|
|
#18+
PG предлагает языки программирования от C до Python. При этом есть и как бы встроенный, "родной" язык pg pl/sql. Казалось бы сохраненные процедуры написанные на C должны работать быстрее. Но что то мне подсказывает что родной язык и есть самый быстрый из-за отсутсвия "швов". Что правда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2008, 13:52 |
|
||
|
Какой язык PG быстрее
|
|||
|---|---|---|---|
|
#18+
Вообще-то каждый язык в своем случае имеет свою производительность в зависимости от поставленой задачи. Сложно сравнить призводительность plpgsql и например plperlu. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2008, 23:26 |
|
||
|
Какой язык PG быстрее
|
|||
|---|---|---|---|
|
#18+
Степан H.Вообще-то каждый язык в своем случае имеет свою производительность в зависимости от поставленой задачи. Сложно сравнить призводительность plpgsql и например plperlu. А если сравнивать С с plpgsql ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2008, 04:29 |
|
||
|
Какой язык PG быстрее
|
|||
|---|---|---|---|
|
#18+
Посмотри сюда: pllua pllua-classic Второй биндинг - моя поделка. Вроде работает, но собирать нужно более-менее вручную. Если понравится буду рад поддерживать его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2008, 10:50 |
|
||
|
Какой язык PG быстрее
|
|||
|---|---|---|---|
|
#18+
Funny_FalconВторой биндинг - моя поделка. Вроде работает, но собирать нужно более-менее вручную. Если понравится буду рад поддерживать его. а можно подробнее - что это и зачем? по ссылке ничего толком не написано, ключевая фраза "It allows using records, arrays, arrays of records as correspondingly nested lua hashes"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2008, 00:12 |
|
||
|
Какой язык PG быстрее
|
|||
|---|---|---|---|
|
#18+
eddie ключевая фраза "It allows using records, arrays, arrays of records as correspondingly nested lua hashes" В lua есть один тип контейнера: таблица - он же хеш. Ближайший к нему сородич - array в PHP. Отличия: 1.- в array/PHP ключи могут быть только строками (числа в ключах работают как строки ) - таблица Lua различает числа, строки, позволяет любым данным быть ключами (правда, таблицы и userdata ищутся только как identity ) 2. - array/PHP - всегда упорядоченная структура - значения выбираются в том порядке в котором они туда попадали ( или в каком они после сортировки ) ( для примера сделайте $a = array( 3=>'3', 2=>'2', 1=>'1'); foreach( $a as $val ){ echo $val,' '; } ) - в Lua таблице упорядочена только часть считающаяся массивом ( номера с 1..n где n - номер элемента != nil, следующий за которым nil ) В целом, поэтому таблица Lua - намного более легковесная и шустрая ( хотя array/PHP иногда мне напоминает швейцарский армейский ножик :-) ) 3. так как таблица - единственный встроенный тип данных, конструкция её и обращение к её полям упрощено, т.е. В PHP: $a = array( 'id'=>1, 'name'=>'jo', 'value'=>'black' ); $a['name'] = 'jojo'; echo $a['id'], $a['name'], $a['value']; В Lua может быть так: local a = {['id']=1, ['name']='jo', 'value'='black'} a['name']='jojo' print( a['id'], a['name'], a['value'] ) или полностью эквивалентно, но гораздо приятнее: local a = { id=1, name='jo', value='black' } a.name = 'jojo' print( a.id, a.name, a.value ) Вот почему, в принципе, мне нравится Lua ( если опустить наибольшую скорость среди скриптовых языков ) Перейдем к: "It allows using records, arrays, arrays of records as correspondingly nested lua hashes" plpythonu позволяет нам получать записи из запроса в виде хэша (dict в Python). Однако все данные он приводит либо к числу, либо к строке. Если одно из полей результат массив или запись ( благо Postgresql нам это позволяет ), то разбирать нам придётся её самим. plperl опознаёт с массивами целых чисел ( правда получает он его разбором строки ) дальше всего идёт plruby, но ruby - достаточно медленный язык сам по себе ( это не мешает мне его обажать :-) , но как язык внутри PostgreSQL я его буду использовать в предпосленюю очередь. в pllua-classic все попадающиеся массивы, записи, массивы записей, записи, содержащие массивы - правильно переводятся в таблицы и таблицы таблиц К примеру: допустим есть таблица Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. res = [{'warrior':'(1,peter,"{knife,sword}")'},{'warrior':'(2,george,"{gun,""machine gun""}")'}] т.е. значением res[0]['warrior'] будет строка '(1,peter,"{knife,sword}")' сделав же его в pllua_classic мы получим результат, эквивалентный (не полностью, но достаточно ) res = { {warrior = {id=1, name='peter', weapons={'knife','sword'} } }, { warror= {id=2, name='peter', weapons={'gun', 'machine gun'} } } } т.е. res[1].warrior.weapons будет таблица {'knife', 'sword' } (примечание: в Lua таблица аля массив нумеруется с 1!!!) Выдержки из папки sql Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2008, 17:27 |
|
||
|
Какой язык PG быстрее
|
|||
|---|---|---|---|
|
#18+
Funny_Falcon, так всё-таки в чём разница с pllua? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2008, 11:44 |
|
||
|
Какой язык PG быстрее
|
|||
|---|---|---|---|
|
#18+
Ну ... Я начал pllua-classic больше из-за внутренних разногласий: 1) в pllua при выборке ты получаешь не таблицу таблиц LUA, а user-data tupletable из которого ты можешь выбирать userdata tuple. Эти userdata являются обёртками вокруг соответствующих структур данных Postgres: tupltable и tuple. Не спорю, может быть это реальная экономия памяти ( а может и нет ), но мне кажется, раз уж мы выбрали Lua, то и работать логичнее с данными, родными для Lua. 2) в pllua 0.1 не возможно было перебрать все поля tuple в цикле - ты должен был знать, какие у тебя поля. 3) в pllua 0.1 были внутреннее разногласие с документацией LUA. Честно, не знаю как сейчас. Кроме того, схема хранения информации о временном типе ( при выборке данных ) была потенциально неверной. Может быть сейчас это исправленно. Кроме того у меня: реализованы подтранзакции, разный режим выбора данных ( с преобразованием в таблицы, или только в строку), быстрые функции для работы с timestamp и timestamptz... что-то еще, что я уже не помню :-( . К сожалению, я ушел с работы, где требовался PostgreSQL ;-( . Но если кому-то pllua-classic будет интересен, готов править баги :-) Кроме того - реальная версия его где-то pllua-classic-0.0.4 (под такой версией я его заливал на SourceForge) и, по-крайней мере на моей машине, он не содержит багов, и не сваливает сервер в рестарт. Опять таки - пожалуйста, тестируйте его, пробуйте применять на реальных задачах, я с удовольствием буду исправлять баги . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 02:55 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=35702069&tid=2003795]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 383ms |

| 0 / 0 |
