В настоящее время нет прямой связи между количеством выполненных инструкций и количеством циклов ЦП , необходимых для их выполнения.
Вы также, кажется, предполагаете, что оператор в C # соответствует одной инструкции сборки / процессора, что также неверно.
Ваш код, кажется, правильно делает то, что говорит описание вашего алгоритма (обратите внимание, что long подписан, используйте ulong для поведения без знака).
Если вы хотите использовать специализированные расширения процессора (например, mmx, sse и т. Д.), Которые могут выполнять присваивание-добавление-назначение в одной инструкции, вам необходимо использовать код сборки. Но я не уверен, существует ли такая конкретная инструкция. Это может зависеть от типа вашего процессора.
Вы не можете использовать ассемблерный код напрямую вместе с c #, но вы можете использовать ассемблер вместе с c (либо в качестве связанного объектного файла используйте его для встроенной сборки). Скомпилированный c-код можно использовать из c # /. Net с interop .
Но первым и важным вопросом для вас должен быть: Чего вы пытаетесь достичь?
Я сомневаюсь, что производительность важна для вашего приложения, и даже если вы честно спросите себя, является ли c # лучшим языком для вашей цели.