Информация об изменениях

Сообщение Re[43]: MS забило на дотнет. Питону - да, сишарпу - нет? от 03.09.2021 16:51

Изменено 04.09.2021 8:07 vdimas

Re[43]: MS забило на дотнет. Питону - да, сишарпу - нет?
Здравствуйте, Serginio1, Вы писали:

V>>Случаев сразу несколько.

V>>Раньше был доступен stackalloc только под примитивные blit-типы.
V>>Например, делаешь byte * b = stackallock byte[N], затем приводишь к указателю на структуру.
S> На самом деле есть public fixed byte
S>https://stackoverflow.com/questions/13001327/id-like-to-use-union-as-c-sharp-with-byte-array
S> А из него можно уже десериализовать сериализовать объекты

Речь шла о структурах переменного размера.
У таких структур обычно только некий заголовок известен.

S>ну и юнионы тоже


Не обязательно.
Можно просто описать разные типы структур, читать поле-дискриминатор и приводить к соотв. структуре.
Твоё описание хорошо, когда одно поле всего в union, но бывает union структур.


S> Кстати для интереса какая разница вызова localMultiply,Combine, UnsafeCombine и из натива


Я исходники бенчмарка давал, можно добавлять свои тесты.

Например, я зыбыл про UnmanagedCallersOnly.
Т.е. в тест надо добавить статический метод, помеченный этим атрибутом, получить unmanaged-указатель на этот метод и завернуть по аналогии с остальными случаями в обертку для тестирования.

Хотя, подозреваю, что быстродействие вызова UnmanagedCallersOnly-метода должно быть примерно на уровне DllImport.
Re[43]: MS забило на дотнет. Питону - да, сишарпу - нет?
Здравствуйте, Serginio1, Вы писали:

V>>Случаев сразу несколько.

V>>Раньше был доступен stackalloc только под примитивные blit-типы.
V>>Например, делаешь byte * b = stackallock byte[N], затем приводишь к указателю на структуру.
S> На самом деле есть public fixed byte
S>https://stackoverflow.com/questions/13001327/id-like-to-use-union-as-c-sharp-with-byte-array
S> А из него можно уже десериализовать сериализовать объекты

Речь шла о структурах переменного размера.
У таких структур обычно только некий заголовок известен.

S>ну и юнионы тоже


Не обязательно.
Можно просто описать разные типы структур, читать поле-дискриминатор и приводить к соотв. структуре.
Твоё описание хорошо, когда одно поле всего в union, но бывает union структур.


S> Кстати для интереса какая разница вызова localMultiply,Combine, UnsafeCombine и из натива


Я исходники бенчмарка давал, можно добавлять свои тесты.

Например, я забыл про UnmanagedCallersOnly.
Т.е. в тест надо добавить статический метод, помеченный этим атрибутом, получить unmanaged-указатель на этот метод и завернуть по аналогии с остальными случаями в обертку для тестирования.

Хотя, подозреваю, что быстродействие вызова UnmanagedCallersOnly-метода должно быть примерно на уровне DllImport.