Сообщение Re[16]: А чего молчим про Crowdstrike от 26.07.2024 6:46
Изменено 26.07.2024 6:56 vdimas
Re[16]: А чего молчим про Crowdstrike
Здравствуйте, rameel, Вы писали:
R>И получаем идентичный выхлоп для всех 4 случаев
Ну какой идентичный, когда речь там шла о безопасности кода?
В случае Array диапазон достоверно берётся у объекта-контенера и код является абсолютно безопасным, ОК.
Но в случае Span этот диапазон может быть произвольным:
См., на что именно ты отвечаешь:
Т.е. способ итерации array[i], где i пробегает некий диапазон, не самый эффективный, хотя абсолютно надёжный.
Ты ведь показал итерацию по полному массиву.
А теперь проитерируйся по его части, посмотри разницу и помедитируй.
Теперь-то понятно, зачем сначала рекомендуется брать Span от массива и затем итерироваться?
Для итерации по полному массиву брать Span не требуется, конечно.
Мой поинт был в следующем:
— через Span эффективней (и все более и более популярней в реальном коде);
— но через Span можно залезть в произвольную память и наделать делов, в точности как в С++.
R>И получаем идентичный выхлоп для всех 4 случаев
Ну какой идентичный, когда речь там шла о безопасности кода?
В случае Array диапазон достоверно берётся у объекта-контенера и код является абсолютно безопасным, ОК.
Но в случае Span этот диапазон может быть произвольным:
int[] data = { 1, 2, 3};
foreach(var i in data)
Console.WriteLine(i);
var span = MemoryMarshal.CreateSpan(ref data[0], data.Length + 1);
foreach(var i in span)
Console.WriteLine(i);
См., на что именно ты отвечаешь:
S>>Смотря как реализован доступ к массивам. Например, в дотнете это специальная инструкция байт-кода, за проверку в ней отвечает среда исполнения.
V>это не самый эффективный способ итерации по массивам
Т.е. способ итерации array[i], где i пробегает некий диапазон, не самый эффективный, хотя абсолютно надёжный.
Ты ведь показал итерацию по полному массиву.
А теперь проитерируйся по его части, посмотри разницу и помедитируй.
Теперь-то понятно, зачем сначала рекомендуется брать Span от массива и затем итерироваться?
Для итерации по полному массиву брать Span не требуется, конечно.
Мой поинт был в следующем:
— через Span эффективней (и все более и более популярней в реальном коде);
— но через Span можно залезть в произвольную память и наделать делов, в точности как в С++.
Re[16]: А чего молчим про Crowdstrike
Здравствуйте, rameel, Вы писали:
R>И получаем идентичный выхлоп для всех 4 случаев
Ну какой идентичный, когда речь там шла о безопасности кода?
В случае Array диапазон достоверно берётся у объекта-контенера и код является абсолютно безопасным, ОК.
Но в случае Span этот диапазон может быть произвольным:
См., на что именно ты отвечаешь:
Т.е. способ итерации array[i], где i пробегает некий диапазон, не самый эффективный, хотя абсолютно надёжный.
Ты ведь показал итерацию по полному массиву.
А теперь проитерируйся по его части, посмотри разницу и помедитируй.
Теперь-то понятно, зачем сначала рекомендуется брать Span от массива и затем итерироваться?
Для итерации по полному массиву брать Span не требуется, конечно.
Мой поинт был в следующем:
— через Span эффективней (и все более и более популярней в реальном коде);
— но через Span можно залезть в произвольную память и наделать делов, в точности как в С++.
R>И получаем идентичный выхлоп для всех 4 случаев
Ну какой идентичный, когда речь там шла о безопасности кода?
В случае Array диапазон достоверно берётся у объекта-контенера и код является абсолютно безопасным, ОК.
Но в случае Span этот диапазон может быть произвольным:
int[] data = { 1, 2, 3};
foreach(var i in data)
Console.WriteLine(i);
var span = MemoryMarshal.CreateSpan(ref data[0], data.Length + 1);
foreach(var i in span)
Console.WriteLine(i);
См., на что именно ты отвечаешь:
S>>Смотря как реализован доступ к массивам. Например, в дотнете это специальная инструкция байт-кода, за проверку в ней отвечает среда исполнения.
V>это не самый эффективный способ итерации по массивам
Т.е. способ итерации array[i], где i пробегает некий диапазон, не самый эффективный, хотя абсолютно надёжный.
Ты ведь показал итерацию по полному массиву.
А теперь проитерируйся по его части, посмотри разницу и помедитируй.
Теперь-то понятно, зачем сначала рекомендуется брать Span от массива и затем итерироваться?
Для итерации по полному массиву брать Span не требуется, конечно.
Мой поинт был в следующем:
— через Span эффективней (и все более и более популярней в реальном коде);
— но через Span можно залезть в произвольную память и наделать делов, в точности как в С++.