В проекте я участвую в проекте. Я помогаю ему в том, что кладет unsafe
тег везде в важном коде производительности, независимо от того, нужен он или нет. Обычно этот тег можно удалить безопасно, но, к сожалению, его очень сложно доказать, что он не должен этого делать. Может ли кто-нибудь дать мне хорошую статью, подтверждающую мою точку зрения, поэтому мы могли бы, наконец, закрыть вопрос?Небезопасный тег в безопасном коде
Пример кода, в котором он использовал небезопасным:
unsafe
{
writeableBmp.CopyPixels(new Int32Rect(1, 0, (int)(width - 1), (int)height - 1), buffer, writeableBmp.BackBufferStride, 0);
writeableBmp.Lock();
writeableBmp.WritePixels(new Int32Rect(0, 0, (int)width - 1, (int)height - 1), buffer, writeableBmp.BackBufferStride, 0, 0);
writeableBmp.AddDirtyRect(new Int32Rect(0, 0, (int)width - 1, (int)height - 1));
writeableBmp.Unlock();
}
Его Дело в том, что он где-то читал, что unsafe
требуется, и повышает производительность, давая подсказку компилятору, что кусок кода должен быть составлен иначе.
Начать отсчет времени с кодом и без. На разных машинах. Также сравните выходные данные компилятора. Мягко предложите своему коллеге, что предполагаемые оптимизации никогда не должны делаться без доказательств для их поддержки. Разве ваш коллега измерил разницу? –
Компилятор ничего не делает. «Подсказка» заключается в том, что вы сказали, что используете небезопасный код .. потому что это функция выбора. Если нет небезопасного кода .. его бессмысленно. –
В целом ключевые слова C# и языковые конструкции передают их намерения очень хорошо. Просто взглянув на слово «небезопасное», можно предположить, что код пытается сделать что-то вне управляемой области. Что, черт возьми, так небезопасно в написании пикселей для крика вслух? – Alex