Сообщение Re[6]: Тонкости инициализации от 26.01.2022 20:46
Изменено 26.01.2022 20:54 Mystic Artifact
Re[6]: Тонкости инициализации
Здравствуйте, Sinclair, Вы писали:
Вот вам идея на двоих: нормальный код должен работать в "SkipLocalsInit", когда вот эти переменные на стэке физически не инициализируются, прям как в старые добрые времена.
Поэтому, мне неясно что там курит стандарт на самом деле.
На практике, это выглядит как:
[c#]_ = TryGetValue(out var x);
return x == 0; // привет, не проверили результат /c#]
Это особенно важно работая с нативным кодом, который не имеет привычки писать в выход, если нечего выводить. А соответственно, мы и не должны это читать.
В общем, теперь такое доступно в C# официально. И более того — любой уважающий себя человек (разрабатывающий библиотеку) — просто обязан это использовать (если крохи перфоманса — фактор). Это вроде крохи, но на stackalloc они совсем не крохи. Впрочем и выделять буфера стоит неинициализированными. ОС и так старается чистить нулями страницу, отдавая ее в пользование, а дальше простите, думайте сами (и дотнет по прежнему сугубо нелогичен в этом — BufferWriter идет на помойку первым же, именно поэтому, хотя это единственный его недостаток).
Вот вам идея на двоих: нормальный код должен работать в "SkipLocalsInit", когда вот эти переменные на стэке физически не инициализируются, прям как в старые добрые времена.
Поэтому, мне неясно что там курит стандарт на самом деле.
На практике, это выглядит как:
[c#]_ = TryGetValue(out var x);
return x == 0; // привет, не проверили результат /c#]
Это особенно важно работая с нативным кодом, который не имеет привычки писать в выход, если нечего выводить. А соответственно, мы и не должны это читать.
В общем, теперь такое доступно в C# официально. И более того — любой уважающий себя человек (разрабатывающий библиотеку) — просто обязан это использовать (если крохи перфоманса — фактор). Это вроде крохи, но на stackalloc они совсем не крохи. Впрочем и выделять буфера стоит неинициализированными. ОС и так старается чистить нулями страницу, отдавая ее в пользование, а дальше простите, думайте сами (и дотнет по прежнему сугубо нелогичен в этом — BufferWriter идет на помойку первым же, именно поэтому, хотя это единственный его недостаток).
Re[6]: Тонкости инициализации
Здравствуйте, Sinclair, Вы писали:
Вот вам идея на двоих: нормальный код должен работать в "SkipLocalsInit", когда вот эти переменные на стэке физически не инициализируются, прям как в старые добрые времена.
Поэтому, мне неясно что там курит стандарт на самом деле.
На практике, это выглядит как:
Это особенно важно работая с нативным кодом, который не имеет привычки писать в выход, если нечего выводить. А соответственно, мы и не должны это читать.
В общем, теперь такое доступно в C# официально. И более того — любой уважающий себя человек (разрабатывающий библиотеку) — просто обязан это использовать (если крохи перфоманса — фактор). Это вроде крохи, но на stackalloc они совсем не крохи. Впрочем и выделять буфера стоит неинициализированными. ОС и так старается чистить нулями страницу, отдавая ее в пользование, а дальше простите, думайте сами (и дотнет по прежнему сугубо нелогичен в этом — BufferWriter идет на помойку первым же, именно поэтому, хотя это единственный его недостаток).
Вот вам идея на двоих: нормальный код должен работать в "SkipLocalsInit", когда вот эти переменные на стэке физически не инициализируются, прям как в старые добрые времена.
Поэтому, мне неясно что там курит стандарт на самом деле.
На практике, это выглядит как:
_ = TryGetValue(out var x);
return x == 0; // привет, не проверили результат
Это особенно важно работая с нативным кодом, который не имеет привычки писать в выход, если нечего выводить. А соответственно, мы и не должны это читать.
В общем, теперь такое доступно в C# официально. И более того — любой уважающий себя человек (разрабатывающий библиотеку) — просто обязан это использовать (если крохи перфоманса — фактор). Это вроде крохи, но на stackalloc они совсем не крохи. Впрочем и выделять буфера стоит неинициализированными. ОС и так старается чистить нулями страницу, отдавая ее в пользование, а дальше простите, думайте сами (и дотнет по прежнему сугубо нелогичен в этом — BufferWriter идет на помойку первым же, именно поэтому, хотя это единственный его недостаток).