Будет ли управляемый C ++ (CLI) код, перенесенный из C #, работать быстрее, чем оригинальный C #?(tcp сервер) - PullRequest
0 голосов
/ 18 февраля 2011

Итак, мы создали простой C # tcp сервер для обмена видео. все, что он делает, это просто и должно быть сделано «вживую» - получить живое видео, упакованное в контейнер (в нашем случае FLV) от какого-то вещателя, и поделиться полученным потоком со всеми подписчиками (означает открыть контейнер, создать новые контейнеры и сделать временные метки на структуре контейнера, но никак не декодировать содержимое пакетов). Мы протестировали наш сервер, но обнаружили, что его производительности недостаточно для 5 входящих потоков и 10 исходящих потоков. Например, это приложение для портирования. Мы попробуем это любым способом, но прежде чем мы попробуем, я задаюсь вопросом, пробовал ли кто-нибудь из вас подобное на любом из ваших проектов. Итак, главный вопрос - сможет ли C ++ CLI сделать приложение быстрее, чем оригинальный C #?

Ответы [ 4 ]

4 голосов
/ 18 февраля 2011

Нет.

Написание одного и того же кода на другом языке не имеет никакого значения;он все равно будет компилироваться в тот же IL.

C # не медленный язык;Возможно, у вас проблемы с производительностью более высокого уровня.
Вам следует оптимизировать существующий код.

2 голосов
/ 18 февраля 2011

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

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

1 голос
/ 18 февраля 2011

Если вы вызываете некоторые функции из собственной DLL с помощью подхода P / Invoke, то по крайней мере преобразование этих механизмов обратного вызова в C ++ / Cli с использованием IJW (это просто работает) немного повысит производительность.

1 голос
/ 18 февраля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...