C++ / CLI быстрее, чем C#

Два пути:

public static byte[] StrToByteArray(this string s)
{
    List<byte> value = new List<byte>();
    foreach (char c in s.ToCharArray())
        value.Add(c.ToByte());
    return value.ToArray();
}

И,

public static byte[] StrToByteArray(this string s)
{
    s = s.Replace(" ", string.Empty);
    byte[] buffer = new byte[s.Length / 2];
    for (int i = 0; i < s.Length; i += 2)
        buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);
    return buffer;
}

я склонен использовать нижнюю часть еще один часто, чем вершина, не сравнили их для скорости.

14
задан Sam 24 August 2014 в 22:50
поделиться

5 ответов

Не обязательно. Однако C ++ / CLI убирает большую часть синтаксического сахара вокруг неэффективных способов выполнения вещей, которые присутствуют в C # (например, бокс).

Кроме того, C ++ / CLI позволяет вам гораздо более чистое взаимодействие с неуправляемым кодом, фактически позволяя вам смешивать управляемый и неуправляемый код, который имеет решающее значение для производительности, может быть полезным.

РЕДАКТИРОВАТЬ:

См. этот пост, чтобы узнать о некоторых различиях: http://msdn.microsoft.com /en-us/library/ms379617(VS.80).aspx

14
ответ дан 1 December 2019 в 09:33
поделиться

Поскольку оба они работают на платформе .NET, я бы сказал, что любая разница в производительности будет незначительной. Любая разница почти наверняка будет зависеть от того, насколько хорошо работают компиляторы, которые вы используете.

8
ответ дан 1 December 2019 в 09:33
поделиться

Ну, краткий ответ - нет . Почему? Ссылочные типы в C ++ / CLI скомпилированы в MSIL, как и в C #.

Хорошая вещь в C ++ / CLI (и в длинном ответе) заключается в том, что вы можете легко вызывать собственный код, который (во многих случаях) быстрее. При этом, если вы пишете собственный класс C ++ и ожидаете, что он будет выполняться изначально при вызове кем-либо из управляемого класса, этот собственный класс C ++ должен быть скомпилирован без поддержки CLR ( этот вопрос касается того, как сделай это).

3
ответ дан 1 December 2019 в 09:33
поделиться

Любой управляемый код, написанный на C ++ / CLI, будет, по сути, точно таким же, как эквивалентный C #, при условии точности компилятора, поскольку оба они в конечном итоге будут инструкциями промежуточного языка. Однако C ++ / CLI позволяет легко смешивать неуправляемый код с управляемой частью, что может обеспечить значительный выигрыш в скорости при хорошей оптимизации.

2
ответ дан 1 December 2019 в 09:33
поделиться

Увидев оба варианта. NET-языки, которые компилируются в один и тот же байт-код, который, в свою очередь, запускается на той же виртуальной машине, я бы сказал, в общем, нет.

C ++ / CLI действительно предназначен только для обеспечения языкового взаимодействия между .NET и C ++.

1
ответ дан 1 December 2019 в 09:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: