|
|
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоФи Код: pascal 1. 2. 3. 4. 5. 6. В теории - да, быстрее на один вызов Length. Однако опирается на постулат, что все строки заканчиваются нулевым символом, что, емнип, не документировано. Также не прожуёт строки с нулевым символом внутри (а это, к примеру, способ задания массива строк в WinApi). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 18:20 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
zinpubЯ её допеределывал, чуууть медленнее асма Вот и славно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 18:26 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Василий 2ГирлионайльдоФи Код: pascal 1. 2. 3. 4. 5. 6. В теории - да, быстрее на один вызов Length. Однако опирается на постулат, что все строки заканчиваются нулевым символом, что, емнип, не документировано. Также не прожуёт строки с нулевым символом внутри (а это, к примеру, способ задания массива строк в WinApi). Лишнее чтение на каждой итерации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 18:30 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 18:31 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Посмотрите на тесты (Код с низу) Переносы не имеют значения никакого. Код: 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. Код: pascal 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. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 18:31 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
zinpub, если строки ансишные, то табличку перекодировки сделай, должно весьма быстро получиться. Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 18:35 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
чччД__, Вообще ужассно Код: sql 1. 2. 3. 4. 5. 6. 7. Код: pascal 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. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 18:57 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
И чего вам эти попугаи покоя не дают ? Или это возвращение великого оптимизатора ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 19:00 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоВообще ужассно Да,, операция записи недешева. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 19:05 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
schiИ чего вам эти попугаи покоя не дают ? Или это возвращение великого оптимизатора ? Самый оптимальный вариант. Быстрее только включить выравнивание на 16. И с помощью SSE инструкций искать маску символа. Прирост в два раза. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 19:08 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоschiИ чего вам эти попугаи покоя не дают ? Или это возвращение великого оптимизатора ? Самый оптимальный вариант. Быстрее только включить выравнивание на 16. И с помощью SSE инструкций искать маску символа. Прирост в два раза. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Самый оптимальный вариант - это StringReplace. Дешево, сердито и всем понятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 20:56 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоВообще ужассно А все символы в исходной строке требуют замену - что быстрее? А если в множестве заменяемых символов больше одного элемента? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 21:56 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
schi Самый оптимальный вариант - это StringReplace. Дешево, сердито и всем понятно Он сначала выделяет 32 элемента в массив, и ищет через pos позиции, записывая их в массив. выделяя его, если нужно. А потом только, он гуляет по этому массиву, и заменяет в строке нужные позиции Короткий аналог, без массива Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 22:07 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоСамый оптимальный вариант А ничего, что в этом варианте есть сайд эффект - замена символов в исходной строке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 22:11 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
чччД__, если массово заменять. То StringReplace проигрывает, а твоя функция по прежнему выдаёт тоже самое Код: 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. код Код: pascal 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. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 22:22 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, мы двигаем 1 указатель, который в конце нигде не используется. Думаю что не вызовет порчу памяти ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 22:24 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Гирлионайльдомы двигаем 1 указатель, который в конце нигде не используется. Думаю что не вызовет порчу памяти Я о том, что у тебя содержимое const s: string; меняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 22:43 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, не доглядел) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 22:53 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Гирлионайльдо, добавь https://bitbucket.org/alex7691/delphi/src/master/FastStringReplace/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 22:57 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Гирлионайльдоне доглядел) Ещё, если хочешь ускориться обрабатывай по несколько символов за итерацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 23:13 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоschiСамый оптимальный вариант - это StringReplace. Дешево, сердито и всем понятно Он сначала выделяет 32 элемента в массив, и ищет через pos позиции, записывая их в массив. выделяя его, если нужно. А потом только, он гуляет по этому массиву, и заменяет в строке нужные позиции Короткий аналог, без массива Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. "Я понимаю, лет 30-40 назад, при тогдашней стоимости и производительности железа имело смысл минимизировать все и везде, вплоть до оптимизации кода инициализации. Но сейчас смысла в этих попытках столько же, сколько в тщательном измерении длины шага мерина, которого ведут на живодерню (с) Виктор Конецкий Мне без разницы, занимает утилита 12 килобайт или 10 мебагайт, если она делает то, что мне нужно. " 20472449 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2018, 23:20 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
schiИ чего вам эти попугаи покоя не дают ? Или это возвращение великого оптимизатора ? Неет, мне хватает варианта by Vassily2, но ради интереса... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 00:30 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоПосмотрите на тесты (Код с низу) Переносы не имеют значения никакого. Код: 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. Код: pascal 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. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. Не переносы, а запятые, которые и надо заменять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 00:32 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
чччД__ГирлионайльдоВообще ужассно А все символы в исходной строке требуют замену - что быстрее? А если в множестве заменяемых символов больше одного элемента? Строка от 120 до 370 символов. Запятых от 12 до 67 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 00:34 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
haydegenГирлионайльдо, добавь https://bitbucket.org/alex7691/delphi/src/master/FastStringReplace/ Оттуда и брал начальный вариант 😔 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 00:37 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39676507&tid=2040575]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 497ms |

| 0 / 0 |
