Настоящая проблема связана с использованием графической библиотеки GTK. Каир. Вы правы, говоря, что GTK работает намного лучше в Linux и других операционных системах по сравнению с Windows. Это говорит о том, что на самом деле проблема не во всей Каирской библиотеке. Он находится в Win32 бэкэнде Каира. Согласно Backend-Info в Каире, Документы; Cairo использует xlib , а в некоторых случаях cairo-gl (например, настроенный OpenGL) для работы на Linux и других платформах. В то время как в Windows он использует Win32 GDI , который, в конце концов, немного медленный и устаревший (не говоря уже о программном обеспечении полностью).
Тем не менее, даже это не в полной мере объясняет низкую производительность Gtk в Windows. Другая проблема может заключаться в том, что вместо использования нативных виджетов, Gtk предпочитает рисовать свои собственные виджеты , которые выглядят почти одинаково на всех платформах. Однако в Windows он также пытается эмулировать нативные виджеты, используя LibWimp для дальнейшего улучшения нативного внешнего вида. Этот дополнительный шаг только для Windows может также учитывать снижение производительности. Чтобы убедиться в этом, попробуйте удалить (или переименовать) libwimp.dll в каталоге GIMP. После этого GIMP работает намного быстрее (хотя выглядит немного неродным).
Есть и другие более мелкие факторы, которые могут влиять или не влиять на производительность Gtk в Windows, например, тот факт, что GTK имеет дополнительное время выполнения с примерно 12-15 дополнительными dll по сравнению с другими наборами инструментов, которые имеют как 1-2. Динамическое связывание всей среды выполнения Gtk может значительно увеличить время запуска. Существует также тот факт, что Gtk использует множество других библиотек, таких как Glib , Pango и, конечно, Cairo . Написание клейкого кода для этих библиотек также добавляет много накладных расходов, а иногда даже библиотеку extra , такую как Gdk .
Чтобы оптимизировать Gtk, вы можете попробовать изменить бэкэнд Cairo (сложно, не рекомендуется и требует еще тонны клея) или прекратить использование libWimp (это сделает Gtk менее естественным). Но в целом я думаю, что GTK не , что медленно. Мне никогда не приходилось использовать какие-либо оптимизации. Хотя я и раньше использовал WinApi.