Почему C# компилирует намного быстрее, чем C++? [дубликат]

Я рекомендую Promise.all, он разрешит одно Обещание после того, как все обещания будут выполнены. И технически асинхронная функция также является обещанием, поэтому она будет возвращать обещание.

вот пример.

https://codesandbox.io/s/jzz1ko5l73?fontsize=14

12
задан Community 23 May 2017 в 12:02
поделиться

4 ответа

13
ответ дан 2 December 2019 в 06:45
поделиться

Существует два отдельных вопроса для рассмотрения - количество фаз обработки и сложности предназначения.

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

Кроме того, имейте в виду, что компилятор C++ будет предназначаться для x86 или x64 машинного языка - обрабатывающий всю оптимизацию впереди и пытающийся лучше всего использовать аппаратные средства, которые действительно не оптимизированы при разработке стиля OO.

Напротив, компилятор C# предназначается для промежуточного языка Microsoft (MSIL), высокоуровневая подобная машинному коду платформа, которая была разработана, чтобы использоваться для разработки OO. Многие конструкции, обеспеченные C#, отображаются непосредственно в инструкции IL, делая компиляцию действительно легкой. Справедливый блок оптимизации и другого действия задерживается до запуска фактической программы, в которой точке это оптимизировано для точной доступной машины.

7
ответ дан 2 December 2019 в 06:45
поделиться

Поскольку C++ компилирует в машинный код, в то время как C# к байту кодируют. Вы заметили задержку при первом запуске программы.NET. Это - когда код байта получает JITed (скомпилированный в машинный код).

2
ответ дан 2 December 2019 в 06:45
поделиться

Я думаю, что это, вероятно, из-за ОБЪЕМА парсинга, это должно сделать, а не скорость самого синтаксического анализатора.

C++ обычно использует препроцессор C, который вытягивает в большом количестве из, включают файлы (как другие предположили, и другой вопрос содержит много ответов как он). Это чрезмерно увеличивает размер объема кода для парсинга.

Таким образом, если Вы сравниваете их в целях записать, что синтаксический анализатор... узнает, что у Вас не должно быть .h-стиля, включают файлы :)

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

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