|
Парсинг бинарного массива
|
|||
---|---|---|---|
#18+
Я делаю парсинг бинарного массива. Он сосотоит из последовательных записей. Каждая запись 23 байта и начинается с 55. Код: c# 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.
Все парситься но страшно медленно. я уже смотрел как соптимизировать и что выкинуть - ничего не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 14:05 |
|
Парсинг бинарного массива
|
|||
---|---|---|---|
#18+
уберите конкатенацию строк msg += ParseSingleMessage(temp); switch (data[1]) { case 0x04: str += "MSG#4"; break; case 0x05: str += "MSG#5"; break; case 0x0A: str += "MSG#10"; break; case 0x0F: str += "MSG#15"; break; case 0x10: str += "MSG#16"; break; default: str += "Unknown message"; break; } Используйте StringBuilder или TextWriter ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 14:22 |
|
Парсинг бинарного массива
|
|||
---|---|---|---|
#18+
Roman Mejtesуберите конкатенацию строк msg += ParseSingleMessage(temp); switch (data[1]) { case 0x04: str += "MSG#4"; break; case 0x05: str += "MSG#5"; break; case 0x0A: str += "MSG#10"; break; case 0x0F: str += "MSG#15"; break; case 0x10: str += "MSG#16"; break; default: str += "Unknown message"; break; } Используйте StringBuilder или TextWriter я в конце хочу выдать результат на текстовый компонент. если я уберу msg += ParseSingleMessage(temp); что же я выдам? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 14:27 |
|
Парсинг бинарного массива
|
|||
---|---|---|---|
#18+
jenya7, Код: c# 1. 2. 3.
или Код: c# 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 14:29 |
|
Парсинг бинарного массива
|
|||
---|---|---|---|
#18+
Roman Mejtesjenya7, Код: c# 1. 2. 3.
или Код: c# 1. 2. 3.
фига се! реально шустро стал работать. спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 14:47 |
|
Парсинг бинарного массива
|
|||
---|---|---|---|
#18+
Ты опять логику с UI перемешиваешь? Какого лешего у тебя там ProgressBar затесался? А за такой кошмар с magic numbers наследники твоего кода тебя так вообще проклянут до седьмого колена. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 16:04 |
|
Парсинг бинарного массива
|
|||
---|---|---|---|
#18+
fkthatТы опять логику с UI перемешиваешь? Какого лешего у тебя там ProgressBar затесался? А за такой кошмар с magic numbers наследники твоего кода тебя так вообще проклянут до седьмого колена. а что без прогрес бара сидеть и тупить в экран на 100 000 записей? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 17:07 |
|
Парсинг бинарного массива
|
|||
---|---|---|---|
#18+
jenya7а что без прогрес бара сидеть и тупить в экран на 100 000 записей? А что, другого способа передавать на UI состояние процесса, кроме как напрямую в прогрессбар писать не существует? Хинт: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 17:34 |
|
Парсинг бинарного массива
|
|||
---|---|---|---|
#18+
jenya7 Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
1. можно еще не копировать, а передавать массив и начало (позицию) найденной записи 2. зачем каждый раз перепроверять на равенство 55? у вас же последовательные записи. или между ними может быть мусор? 3. зачем делать DoEvent на каждую найденную запись? помимо того, что это делать вообще не нужно, достаточно обеспечить максимум 10 раз в секунду, и то слишком часто. где то я встречал упоминание, что все равно более 60 раз в секунду невозможно обновлять форму ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2019, 23:10 |
|
Парсинг бинарного массива
|
|||
---|---|---|---|
#18+
Arm79jenya7 Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
1. можно еще не копировать, а передавать массив и начало (позицию) найденной записи 2. зачем каждый раз перепроверять на равенство 55? у вас же последовательные записи. или между ними может быть мусор? 3. зачем делать DoEvent на каждую найденную запись? помимо того, что это делать вообще не нужно, достаточно обеспечить максимум 10 раз в секунду, и то слишком часто. где то я встречал упоминание, что все равно более 60 раз в секунду невозможно обновлять форму 1. Да. Тут я ступил. 2. Если есть битая запись или несколько битых записей я найду следущую. 3. Без DoEvent прогрес бар не двигается и весь ГУИ тоже. Можно конечно проредить вызов DoEvent. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 08:48 |
|
Парсинг бинарного массива
|
|||
---|---|---|---|
#18+
jenya7Без DoEvent прогрес бар не двигается и весь ГУИ тоже Тяжелый случай. Уж хоть какой-нить BackgroundWorker прикрутили бы, что ли... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2019, 09:23 |
|
|
start [/forum/topic.php?fid=20&msg=39818399&tid=1398928]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
132ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 241ms |
0 / 0 |