|
Байты и структуры
|
|||
---|---|---|---|
#18+
Не знаю сюда-ли, но вроде сюда. Набрасываю стендовый макет клиента, из операций нужно соединиться, передать данные, получить ответ. И максимально быстро сделать пару миллионов повторений с параллельно запущенным десятком клиентов. Гугль показывает какие-то дикие решения с маршаллингом, бинарными врайтерами для каждой структуры и т.п. довольно сложные решения относительно поставленной задачи. Что имеем - набор структур Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Которые я хочу отправить по соединенному сокету как-то так, особенно с заполнением не заморачивался Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Так вот собственно вопрос. Если нельзя предоставить стуктуру как набор байт (как например в дельфи) - как можно переделать чтобы максимально минимизировать маршаллинг? Ведь даже копирование данных структуры в байт-набор уже накладные расходы. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 20:24 |
|
Байты и структуры
|
|||
---|---|---|---|
#18+
Часть выводов сделал с статьи тестов http://genericgamedev.com/general/converting-between-structs-and-byte-arrays/ ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 20:31 |
|
Байты и структуры
|
|||
---|---|---|---|
#18+
Почитай про [unsafe] и указатели. byte[] скорее всего будет указатель на массив, а не сам массив. Не проверял, только теорию читал. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 21:10 |
|
Байты и структуры
|
|||
---|---|---|---|
#18+
Feg16, авторВедь даже копирование данных структуры в байт-набор уже накладные расходы. от этого никуда имхо не деться. может попробовать более нативно типа: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2016, 21:12 |
|
Байты и структуры
|
|||
---|---|---|---|
#18+
Feg16Если нельзя предоставить стуктуру как набор байт С чего бы это? http://stackoverflow.com/questions/3278827/how-to-convert-a-structure-to-a-byte-array-in-c ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2016, 02:59 |
|
Байты и структуры
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныС чего бы это?Первый же ответ в ссылке - маршаллинг, с накладными расходами в копировании, о чем было предупреждение в начале поста. Но похоже кроме этого варианта особого выбора нету, осталось только определиться - простота через маршаллинг либо быстродействие и кучи кода через врайтер. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2016, 07:54 |
|
Байты и структуры
|
|||
---|---|---|---|
#18+
Feg16Сон Веры ПавловныС чего бы это?Первый же ответ в ссылке - маршаллинг, с накладными расходами в копировании, о чем было предупреждение в начале поста. А вы потрудитесь промотать темы по ссылке немного ниже. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2016, 10:12 |
|
Байты и структуры
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныА вы потрудитесь промотать темы по ссылке немного ниже.Проматывал. Может потрудитесь скопипастить сюда кусок, на который стоит обратить внимание и который небыл обговорен выше? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2016, 10:47 |
|
Байты и структуры
|
|||
---|---|---|---|
#18+
Feg16Проматывал. Может потрудитесь скопипастить сюда кусок, на который стоит обратить внимание и который небыл обговорен выше? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2016, 11:58 |
|
Байты и структуры
|
|||
---|---|---|---|
#18+
И? Однофигственный маршалинг и накладные расходы в копировании, причем если не ошибаюсь пример - более медленный чем ранее представленные примеры. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2016, 12:41 |
|
Байты и структуры
|
|||
---|---|---|---|
#18+
Feg16Но похоже кроме этого варианта особого выбора нету, осталось только определиться - простота через маршаллинг либо быстродействие и кучи кода через врайтер.А точно тонким местом будет "лишнее" копирование данных в памяти, а не передача данных через сокет? Вероятно лучше сначала сделать "по обычному", потом оптимизировать по необходимости. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2016, 14:32 |
|
Байты и структуры
|
|||
---|---|---|---|
#18+
Feg16, А как то так не рассматриваешь? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Только с полями типа public byte[] Email; придется покулупаться. Или делать фиксированной длины или 1-2-3-4 байтами писать длину. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.04.2016, 14:39 |
|
|
start [/forum/topic.php?fid=20&msg=39226148&tid=1400633]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 19ms |
total: | 158ms |
0 / 0 |