Как избежать накладных расходов C # JIT

Есть ли простой способ заранее выполнить JIT-код C # вместо ожидания первого вызова кода? Я читал о NGEN, но не думаю, что это мне поможет.

Мое приложение ожидает и реагирует на конкретное внешнее событие, которое исходит от порта UDP, и ни один из кодов критического пути не (а) запускается до прибытия события или (б) никогда не запускается снова, поэтому стоимость В этом сценарии JIT высок. При проверке профилировщиком ANTS накладные расходы для JIT составляют около 40-50%, иногда до 90%. Мое приложение очень чувствительно к задержкам, и каждая миллисекунда на счету.

Моя первоначальная мысль заключалась в том, что я мог бы добавить параметр bool к каждому методу критического пути и вызывать эти методы до того, как произойдет событие, чтобы инициировать JIT-компиляцию. Однако есть ли более красивый и менее хитрый способ?

Большое спасибо

7
задан endian 1 November 2011 в 23:55
поделиться