
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
12.07.2009, 12:41
|
|||
|---|---|---|---|
извлечь характер |
|||
|
#18+
как можно из строки извлечь (быстро) символ? Пытался с помощью мид, слишком долго, если строка имеет размер 300 000 байт. как быть? (Мне надо перебрать всю строку побайтно и зашифровать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2009, 01:42
|
|||
|---|---|---|---|
извлечь характер |
|||
|
#18+
Mr.Powerкак можно из строки извлечь (быстро) символ? Пытался с помощью мид, слишком долго, если строка имеет размер 300 000 байт. как быть? (Мне надо перебрать всю строку побайтно и зашифровать) Можно, например, скопировать текст в байтовый массив и обработать каждый байт этого массива: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.07.2009, 09:19
|
|||
|---|---|---|---|
извлечь характер |
|||
|
#18+
ZVI, спасибо, хорошая идея. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2009, 13:20
|
|||
|---|---|---|---|
извлечь характер |
|||
|
#18+
Mr.Power, другая идея состоит в том, чтобы сделать без копирования VB-шный массив (точнее, safearray) кодов символов: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2009, 14:42
|
|||
|---|---|---|---|
|
|||
извлечь характер |
|||
|
#18+
У vb много достоинств но скорость работы это не его козырь Если строка 300K и на обработку отводится микросекунды на плохонькой машине изучай asm быстее его ничего не бывает при работе со строками VB заметно тормозит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2009, 16:39
|
|||
|---|---|---|---|
|
|||
извлечь характер |
|||
|
#18+
> Автор: Нырков Сергей > У vb много достоинств но скорость работы это не его козырь Позволю себе не согласится, при грамотном проектировании и грамотной реализации программа написанная на VB может и не проигрывать в скорости работы аналогу на С++ или Делфи. А учитывая что программа на VB это, как правило, back-end то пользователь и не заметит особой разницы в скорости работы. > Если строка 300K и на обработку отводится микросекунды на плохонькой машине изучай asm быстее его ничего не > бывает при работе со строками VB заметно тормозит А ты сделай свой набросок и протестируй на скорость его и пример Бенедикта и немного удивись Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.07.2009, 16:50
|
|||
|---|---|---|---|
|
|||
извлечь характер |
|||
|
#18+
Про ассемблер здесь злостный оффтопик, но просто посчитаем: 300 Ксимволов (600 Кбайт), 100 мкс -> ПСП только на чтение 6 ГБ/с. Не говоря про обработку и запись. Угу. Ага. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.07.2009, 04:11
|
|||
|---|---|---|---|
извлечь характер |
|||
|
#18+
Использование API-функций для подмены указателей вместо копирования больших фрагментов памяти, конечно же эффективно. Но при тестовой строке 300000 байт по сравнению с более простым методом обработки байтового массива выигрыш-то небольшой. И для сохранения результата кодирования (вспомним тему) потребуется еще одно присвоение, т.е. дополнительное время на операцию с большим фрагментом памяти, хотя можно все сделать и до освобождения памяти ppsaWChars, но это всё же будет ограничением на структуру кода. Если уж использовать API, то вне конкуренции загрузка в память скомпилированного бинарного кода, написанного на ассемблера, с использованием обратного вызова (VB+Asm). Ради интереса провел сравнительное тестирование. Использовал тестовый Unicode-текст с 300000 символами, количество циклов для каждого метода: 100. Так как тема изначально была о кодировании, то в каждый метод, кроме VB+Asm, добавил: Число Xor 1 для имитации кодирования с паролем. В варианте VB+Asm для реального Xor- кодировани использовал более длинный пароль "Password", т.е. этот вариант - посложнее. Результаты тестирования, полученные на моем компе: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код модуля 1 (все, кроме VB+Asm) Module1 Код: 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. Код модуля 2 (VB+Asm) Module2 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.07.2009, 05:20
|
|||
|---|---|---|---|
извлечь характер |
|||
|
#18+
В методе Safe Array, конечно же, нужно было Private Sub Test_SafeArray(ByVal S As String) заменить на Private Sub Test_SafeArray(S As String) . Тогда и результат сохранится, и скорость в раза 2.5 раза выше будет. Но метод VB+Asm все же быстрее, у меня - примерно 2.3 раза. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.07.2009, 05:34
|
|||
|---|---|---|---|
извлечь характер |
|||
|
#18+
ZVIВ методе Safe Array, конечно же, нужно было Private Sub Test_SafeArray(ByVal S As String) заменить на Private Sub Test_SafeArray(S As String) . Тогда и результат сохранится, и скорость в раза 2.5 раза выше будет. Но метод VB+Asm все же быстрее, у меня - примерно 2.3 раза. Предыдущие оценки быстродейсвия были неверны, привожу уточненные результаты тестирования: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=60&mobile=1&tid=2160762]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 333ms |

| 0 / 0 |
