|
|
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyAleksandr Sharahov, А строки почему только кратные 4? Не обязательно кратные. Последний кусок может быть не кратным. Но все равно обработается как 4-байтовый интегер. Если подходить формально, то так делать некорректно по 2 причинам: 1. Выход за границу строки. Но т.к. память выделяется кратно 4, то к AV это не приведет. 2. Терминатор обрабатывается как символ данных и теоретически может быть заменен, если нулевой элемент в таблице замен не равен 0. Но тут уж программист в ответе. Kazantsev AlexeySetLength для необнулённого Result в реальном коде, скорее всего, будет давать просадку. А какие тут еще варианты? Setstring или присваивание? Надо бы проверить, конечно. P.S. Код писал, чтобы сравнить с работой с масками по 4 байта. Получилось примерно одинаково. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 17:12 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovА какие тут еще варианты? Setstring или присваивание? Result := ''; SetLength(Result, ...); Без обнуления на потенциальных реаллоках будет ещё копирование данных происходить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 17:17 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyAleksandr SharahovА какие тут еще варианты? Setstring или присваивание? Result := ''; SetLength(Result, ...); Без обнуления на потенциальных реаллоках будет ещё копирование данных происходить. Скорее всего, для длинного результата, большего по сравнению с предыдущим так и будет. Но, с другой стороны, на малых длинах и при меньшей или равной длине нового результата это, вероятно, будет медленнее. Требуется проверка с тем MM, который предполагается использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 17:37 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Можно еще такое проверить Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 17:43 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, ошибся, неравенство в другую сторону надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 17:46 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, Я согласен, что всё это тестировать нужно по месту применения, но даже на малых строках вариант с обнулением выигрывает: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 17:52 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyЯ согласен, что всё это тестировать нужно по месту применения, но даже на малых строках вариант с обнулением выигрывает: Сейчас проверил на D7 c FastMM и без него. Получилось, что SetLength без доп.ухищрений быстрее всего. Наверно сделал что-то не так ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 18:52 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, Я на XE2 проверял с дефолтным FastMM. Противоположный результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 18:55 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
schizinpubпропущено... А, что даст сотня потоков, если все ядра разобраны ? Или, я чего то не понимаю... Сотня потоков даст непрерывную нагрузку на процессор (перемалывает файлы - ждет завершения ввода-вывода) Она и есть под постоянной загрузкой, если очередь растёт - запускаются дополнительные машины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 19:15 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
zinpub, Да, вот привычка блин, про фастмм забыл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 19:16 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyAleksandr Sharahov, Я на XE2 проверял с дефолтным FastMM. Противоположный результат. Теперь спать не буду) Вот ведь вопрос: они там что-то улучшили или что-то сломали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 19:22 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovKazantsev AlexeyAleksandr Sharahov, Я на XE2 проверял с дефолтным FastMM. Противоположный результат. Теперь спать не буду) Вот ведь вопрос: они там что-то улучшили или что-то сломали? А на ХЕ2 строки не уникодные? Я как-то с д7 на ХЕ10 сразу перепрыгнул. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 19:46 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
zinpubА на ХЕ2 строки не уникодные? Я как-то с д7 на ХЕ10 сразу перепрыгнул. Юникодные. Они с 2009 юникодные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 19:50 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Kazantsev Alexey, Да действительно, в некоторых случаях заметно ускорение на уровне ~10%, поправил. + Добавил перегруженную функцию, она чуть быстрее, но работает только с одной парой: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 22:07 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Aleksandr SharahovKazantsev Alexey, Да действительно, в некоторых случаях заметно ускорение на уровне ~10%, поправил. + Добавил перегруженную функцию, она чуть быстрее, но работает только с одной парой: Код: 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. парни, прекращайте гнать индусский код ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 22:09 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
defecator, а он нам нравится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 22:14 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahovdefecator, а он нам нравится великий оптимизатор дарует вам снисхождение ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2018, 22:21 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
zinpub, Кстати, на моем компе вот такое получилось быстрее, не говоря уж о 21590243 Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2018, 02:06 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, а остаток ? Крокодильчикам?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2018, 09:15 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоAleksandr Sharahov, а остаток ? Крокодильчикам?) А подумать? Крокодильчики съели мозг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2018, 09:59 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Обновил модуль, теперь можно менять любой символ строки (даже #0) на любой: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2018, 10:02 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, забыл поправить процедуру инициализации с учетом последнего изменения Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2018, 10:07 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Aleksandr Sharahov, Не то (Прошлый код) и не тот, один и тот же результат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2018, 12:39 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
Если заменить string на AnsiString то норм. Подправь это расхождение. Ато принимаешь AnsiString а возвращаешь string ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2018, 12:46 |
|
||
|
Быстрая замена символа
|
|||
|---|---|---|---|
|
#18+
ГирлионайльдоЕсли заменить string на AnsiString то норм. Подправь это расхождение. Ато принимаешь AnsiString а возвращаешь string Спасибо, поправил. Исправленная версия: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2018, 12:57 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39677070&tid=2040575]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
242ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 578ms |

| 0 / 0 |
