Потяните сглаженную эдс

Это могло увеличить размер исполняемого файла, и я не думаю, что компиляторы будут всегда на самом деле заставлять их встроить даже при том, что Вы использовали встроенное ключевое слово. (Или действительно ли это наоборот, как какой сказанный Vaibhav?...)

я думаю, что обычно хорошо, если функция имеет только 1 или 2 оператора.

Редактирование: Вот то, что документ linux CodingStyle говорит об этом:

Глава 15: встроенная болезнь

Там, кажется, общее неправильное восприятие, что gcc имеет волшебство, "делают меня быстрее" опцией ускорения названный "встроенным". В то время как использование встраивает, может быть соответствующим (например, как средство замены макросов, см. Главу 12), это очень часто не. Богатое использование встроенного ключевого слова приводит к намного большему ядру, которое в свою очередь замедляет систему в целом вниз, из-за большего icache места для ЦП и просто потому что существует меньше памяти, доступной для pagecache. Просто думайте об этом; мисс pagecache вызывает поиск на диске, который легко берет 5 миллисекунд. Существует МНОГО циклов CPU, которые могут войти в эти 5 миллисекунд.

А разумное эмпирическое правило не должно помещать встроенный в функции, которые имеют больше чем 3 строки кода в них. Исключением к этому правилу являются случаи, где параметр, как известно, является постоянным временем компиляции, и в результате этой постоянности Вы знаете , компилятор будет в состоянии оптимизировать большую часть Вашей функции далеко во время компиляции. Для хорошего примера этого более позднего случая посмотрите kmalloc () подставляемая функция.

Часто люди утверждают, что добавление встраивает к функциям, которые статичны и используются, только однажды всегда победа, так как нет никакого компромисса пространства. В то время как это технически корректно, gcc способен к встраиванию их автоматически без справки и проблемы обслуживания удаления встроенного, когда второй пользователь появляется, перевешивает потенциальную ценность подсказки, которая говорит gcc делать что-то, что это сделало бы так или иначе.

7
задан Vladimir Vaschenko 30 August 2018 в 11:52
поделиться

2 ответа

У нас была аналогичная проблема в проекте DirectX. Увеличение и уменьшение масштаба работают до определенной степени, но это имитирует это. Если это что-то, что вам нужно делать снова и снова, вы могли бы, возможно, проанализировать записи WMF и нарисовать их с помощью антиалиасинга GDI +.

Следующие потоки подтверждают это (но они из 2005 года, поэтому все могло измениться):

http://www.dotnet247.com/247reference/msgs/28/144605.aspx

http://www.dotnetmonster.com/Uwe/Forum.aspx/dotnet-sdk/1127/Graphics-DrawImage -metafile-no-antialiasing

[Edit:]

Эти три программы могут сделать работу за вас: Я предполагаю, что вы можете делать это вручную:

http: // emf-to -vector-converter-command-line-ser.smartcode.com/info.html

http://www.verypdf.com/pdf-editor/index.html

http://www.ivanview.com /converter/emf-batch-converter.html[1131030 visible

[Edit II:]

Итак, вот программа, которая позволит вам проверять EMF различными способами:

http://download.cnet.com/windows/3055-2383_4-10558240.html? tag = pdl-redir

... а вот бесплатная библиотека, которая позволит вам проанализировать 122 команды EMF и вывести их в GDI +. Это, вероятно, должно помочь:

http://www.codeproject.com/KB/GDI-plus/emfexplorer.aspx?msg=2359423

... о, и обратите внимание также на комментарий № 3 к проекту кода страница. Похоже, кто-то раньше бился головой о стену. Надеюсь, это решит вашу проблему.

9
ответ дан 6 December 2019 в 12:52
поделиться

EMF использует команды GDI, а не GDI +, поэтому в нем нет понятия антиалиасинга. Я подозреваю, что когда вы просите GDI + отрендерить файл, он отправляет его в GDI и просто копирует получившееся растровое изображение.

Дублирование этого в коде было бы тем же самым, что и повторная реализация GDI, так что это не совсем осуществимо. Не невозможно, просто большая работа, чем оправдывает выгода. Если есть утилита с открытым исходным кодом, которая может открывать файлы EMF вне Windows,

4
ответ дан 6 December 2019 в 12:52
поделиться
Другие вопросы по тегам:

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