Проблемы работы программ в среде mono в linux

Софт под Linux, разные программы, но только связанные с Linux

Модератор: /dev/random

v567
Сообщения: 92

Re: Проблемы работы программ в среде mono в linux

Сообщение v567 »

Для Warlornhor, pcodr, Full Null, fynjy.
Основная программа строит графики, используя библиотеку ZedGraph, поскольку библиотека предоставляет широкие возможности для работы с графиками: масштабирование, прокрутку, оформление и т. д. Скорость работы второго теста ни о чем не говорит, поскольку там примитивный функционал и загрузка графической подсистемы минимальна.
Если можно, то укажите скорость работы теста (с ZedGraph) как в linux, так и в windows, а также характеристики Ваших ПК и версию Mono и Linux (например так, как это сделано у меня). Это позволит провести хоть какое-то сравнение. :wacko:

Для pcodr, Full Null.
И еще одна просьба: укажите был ли Mono установлен по умолчанию или пришлось его ставить. Если пришлось ставить, то каким образом (по сети или на дисках болтался).


mikluxo писал(а):
24.04.2009 23:13
Учитывая то, что я новичок в mono, не могли бы Вы рассказать этапы отрисовки 2d в моно. Хочу посмотреть на запросы, которые посылает моно в том и другом случае. Сделать некий перехват. А то может там действительно под винду есть волшебный оптимизатор, а для иксов технология "жри как есть".

В настоящее время профессионалов в mono скорее всего нет вообще, поскольку проект только набирает обороты. К тому же отсутствует сколько-нибудь нормальная литературо по mono. Могу лишь предложить вот эти ссылки (на английском):
http://www.mono-project.com/WinForms
http://www.mono-project.com/Drawing
http://www.mono-project.com/Libgdiplus
В первой ссылке рассказывается о пространстве имен System.Windows.Forms, которое редназначено для создания окна (формы) в системе.
Во второй ссылке есть рисунок, где в общем указываются различия в работе типов пространства имен System.Drawing в linux и MS-Windows. Класс System.Drawing отвечает за вывод на форму (т.е. Sysem.Windows.Form) графики в виде изображения и текста.
В третьей ссылке повествуется о библиотеке, обеспечивающей GDI+ совместимое API для осей, не принадлежащих в клану MS-Windows.


mikluxo писал(а):
24.04.2009 23:13
Кстати у Вас КДЕ 4?

Да, именно 4 кеды. Первоначально пробовал в гноме, с ним как-то легче. :)


fynjy писал(а):
25.04.2009 12:48
В любом случае количество выводимых точек в секунду сильно превосходит вариант с использованием библиотеки ZedGraph. Выводы делайте сами.
Думаю тему стоит перенести в раздел программирование.

Выводы делать рано. Пока нет объяснений почему одна и та же программа ведет себя по-разному в linux и windows.
Кроме того, второй тест на несколько порядков примитивнее первого и не подходит к условиям работы основной программ. Первый же тест (с ZedGraph) загружает графическую подсистему как надо.
Тема была создана в разделе "Программирование". Потом её перенесли в этот раздел. :)
Спасибо сказали:
mikluxo
Сообщения: 283
ОС: Slackware 12.2

Re: Проблемы работы программ в среде mono в linux

Сообщение mikluxo »

v567 писал(а):
25.04.2009 15:40
Первый же тест (с ZedGraph) загружает графическую подсистему как надо.

Выскажу свои соображения, возможно они сомнительны но все же.
Пользуя dwm под линем(не знаю может у меня одного так), несмотря на то, что работала программа(первая разумеется) и иксы были загружены на 70(выше не поднимались!), а так же отрисовка окошек(кроме окошек программы) была на высшем уровне без капли задержки, лично я бы сделал вывод, что все-таки плохо работает именно передача до Xorgа. Сейчас я несколько занят(дипломка через месяц) после этого возможно посмотрю кишки mono, очень уж любопытно получилось. Лично я считаю, что либо это(вроде Xorg Client-Server) передача через "сеть" гонит, либо это моно "разгон" дает. Подождем, посмотрим, если найду причину, отпишусь.
v567 писал(а):
25.04.2009 15:40
Да, именно 4 кеды. Первоначально пробовал в гноме, с ним как-то легче.

Не знаю как в Suse у меня кеды четвертые уж очень скрипят и часто падают(возможно у меня руки кривые), или тачка не понравилась им моя.
Ich weiss, dass ich nichts weiss, aber wissen Sie es auch?
Завистники на что не взглянут,
подымут вечно лай,
А ты себе своей дорогою ступай,
Полают, да отстанут. Крылов
Спасибо сказали:
Warlornhor
Сообщения: 428
ОС: openSUSE 12.3

Re: Проблемы работы программ в среде mono в linux

Сообщение Warlornhor »

KDE4, во время первого теста, который загружает графическую систему "как надо", xorg напрягал только одно ядро и то всего на 80% не выше, все остальное работает как должно. Время выполнения примерно 500 сек.

Вот Вы говорите что графическая подсистема не работает как должна и т.д., а теперь представьте сколько прослоек должно правильно сработать, чтобы дойти до этой самой графической подсистемы... Вернемся к библиотекам и тому с помощью чего рисовать, вот есть такой пакет ImageMagic, ну так он рисует картинку (при наверное кривом использовании) несколько минут, а например программа на Java рисует ту же картинку по тем же данным пару секунд, а gnuplot вообще уходит в аут минут на 10. Что здесь не так, графическая подсистема работает не так, или кривые руки програмеров? Я больше склоняюсь ко второму, особенно это относится к приложениям которые в той или иной степени поддерживаются MS, Вы же знаете что рынок железа встанет если это железо будет не нужно, т.к. старое справляется с поставленной задачей?

IMHO
Спасибо сказали:
Аватара пользователя
fynjy
Сообщения: 172
ОС: openSuSE 11.2 i586

Re: Проблемы работы программ в среде mono в linux

Сообщение fynjy »

v567
Время выполнения первого теста 724,9 секунд. По поводу различия первого и второго теста: во втором тесте за раз рисуется только одна точка, а в первом (как я сильно подозреваю) перерисовывается весь экран. Ищите в каком месте накладка.

Система openSuSE 11.1 x86_64; Pentium DualCore 1.6GHz; KDE4.2.2; x.org 1.6.1; compiz включен. mono-core-2.0.1-19

UPD. Да и ещё, в лине давно присутствует рисование без участия иксов оно вроде drm называется или dga. Возможно в mono можно это как-то включить (подробностей не знаю).
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: Проблемы работы программ в среде mono в linux

Сообщение pcodr »

Не поленился и переписал ваш второй тест на GTK#
Результат: 1.5 сек
Вывод: Windows.Forms угрюмый кал
что и требовалось доказать :)

Так что не нужно давать людям начинающим работу с mono ссылку на Windows.Forms

binary:


source:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
remote system type is unix
Спасибо сказали:
Аватара пользователя
fynjy
Сообщения: 172
ОС: openSuSE 11.2 i586

Re: Проблемы работы программ в среде mono в linux

Сообщение fynjy »

pcodr писал(а):
25.04.2009 18:47
Не поленился и переписал ваш второй тест на GTK#
Результат: 1.5 сек
Вывод: Windows.Forms угрюмый кал
что и требовалось доказать :)

Так что не нужно давать людям начинающим работу с mono ссылку на Windows.Forms

binary:


source:


У меня 19,1 секунды.
Спасибо сказали:
Warlornhor
Сообщения: 428
ОС: openSUSE 12.3

Re: Проблемы работы программ в среде mono в linux

Сообщение Warlornhor »

А у меня 3сек, т.е. в 10 раз быстрее :) MS--****
Спасибо сказали:
v567
Сообщения: 92

Re: Проблемы работы программ в среде mono в linux

Сообщение v567 »

Warlornhor писал(а):
25.04.2009 16:56
Время выполнения примерно 500 сек. Вот Вы говорите что графическая подсистема не работает как должна и т.д., а теперь представьте сколько прослоек должно правильно сработать, чтобы дойти до этой самой графической подсистемы... Что здесь не так, графическая подсистема работает не так, или кривые руки програмеров? Я больше склоняюсь ко второму, особенно это относится к приложениям которые в той или иной степени поддерживаются MS, Вы же знаете что рынок железа встанет если это железо будет не нужно, т.к. старое справляется с поставленной задачей?

В Ваших словах есть доля правды - чьи то руки точно кривые. Осталось разобраться чьи именно.


pcodr писал(а):
25.04.2009 18:47
Не поленился и переписал ваш второй тест на GTK#
Результат: 1.5 сек
Вывод: Windows.Forms угрюмый кал что и требовалось доказать :)
Так что не нужно давать людям начинающим работу с mono ссылку на Windows.Forms

Я тож не поленился. Взял Ваш код. Потом в MonoDevelop'ере стал смотреть, что ж к чему. Пришлось немного поправить Ваш вариант, чтобы он точнее соответствовал моему тесту: размеры формы поправил, убрал лишний компонент, изменил надписи кнопки и метки и прочую требуху.
Выполнимый код правки:

Исходники правки:

Результаты с использованием GTK:
1. XP Mono 2.4 Ваш (GTK) - 13.5 сек
2. XP Mono 2.4 с правкой (GTK) - 15.2 сек
3. OpenSUSE 11.1 Mono 2.4 Ваш (GTK) - 40.1 сек
4. OpenSUSE 11.1 Mono 2.4 с правкой (GTK) - 54.7 сек
Результаты с использованием Windows.Forms
1. XP Mono 2.4 - 12.9 сек
2. OpenSUSE 11.1 Mono 2.4 - 75.4 сек.
Итак, в OpenSUSE с использованием GTK получается 54 сек, с Windows.Forms 75 сек. В XP 15 сек и 13 сек соответственно. То есть в любом случае разрыв между Windows и Linux значителен.

Что ж Вы пытались доказать? То, что с использованием GTK имеется некоторый выигрыш в производительности? Это безусловно так. Однако стоит учесть, что выигрыш в производительности ничто в сравнении с проигрышом в функционале между окнами Windows.Forms и GTK. И другого не дано, поскольку сама библиотека GTK# разработа теми, кто реализовал Windows.Forms в linux, компанией Ximian (разработчками проекта Mono). Так что пока победа GTK над "калом" весьма сомнительна.

Учитывая Ваши успехи, повторю ранее озвученную просьбу:
v567 писал(а):
25.04.2009 15:40
Для Warlornhor, pcodr, Full Null, fynjy.
Основная программа строит графики, используя библиотеку ZedGraph, поскольку библиотека предоставляет широкие возможности для работы с графиками: масштабирование, прокрутку, оформление и т. д. Скорость работы второго теста ни о чем не говорит, поскольку там примитивный функционал и загрузка графической подсистемы минимальна.
Если можно, то укажите скорость работы теста (с ZedGraph) как в linux, так и в windows, а также характеристики Ваших ПК и версию Mono и Linux (например так, как это сделано у меня). Это позволит провести хоть какое-то сравнение. :wacko:

Для pcodr, Full Null.
И еще одна просьба: укажите был ли Mono установлен по умолчанию или пришлось его ставить. Если пришлось ставить, то каким образом (по сети или на дисках болтался).




mikluxo писал(а):
25.04.2009 16:06
Выскажу свои соображения, возможно они сомнительны но все же.
Пользуя dwm под линем(не знаю может у меня одного так), несмотря на то, что работала программа(первая разумеется) и иксы были загружены на 70(выше не поднимались!), а так же отрисовка окошек(кроме окошек программы) была на высшем уровне без капли задержки, лично я бы сделал вывод, что
все-таки плохо работает именно передача до Xorgа. Сейчас я несколько занят(дипломка через месяц)
после этого возможно посмотрю кишки mono, очень уж любопытно получилось. Лично я считаю, что либо это(вроде Xorg Client-Server) передача через "сеть" гонит, либо это моно "разгон" дает. Подождем, посмотрим, если найду причину, отпишусь.
Не знаю как в Suse у меня кеды четвертые уж очень скрипят и часто падают(возможно у меня руки кривые), или тачка не понравилась им моя.

Посмотрим. Пробовал в гноме. Результат один и тот же.



Проверил версию насчет кривости использования библиотек DLL в Mono. Для этого слегка поправил
код второго теста (без ZedGraph). Результаты работы не изменились. Версия отпала. Код ниже:

Код: Выделить всё

        private void button1_Click(object sender, EventArgs e)
        {
            double Sm, Sg, x, y;

            m1 = DateTime.Now.Ticks;
            Sm = 0.0;

            while (Math.Abs(Sm) < (15.0 * Math.PI))
            {
                Sg = 0.0; x = 4.0;
                while (Sg < (20.0 * Math.PI))
                {
                    // y = 286.0 + (250.0 * Math.Cos(Sg + Sm + Math.PI / 10.0));
                    y = Mdll.MyS(Sg, Sm);
                    MyBrush.Color = Color.Silver;
                    MyRect = new Rectangle((int)(x - 3), (int)(y - 3), 7, 7);
                    MyG.FillEllipse(MyBrush, MyRect);

                    // y = 286.0 + (250.0 * Math.Cos(Sg + Sm));
                    y = Mdll.MyS1(Sg, Sm);
                    MyBrush.Color = Color.DarkBlue;
                    MyRect = new Rectangle((int)(x - 3), (int)(y - 3), 7, 7);
                    MyG.FillEllipse(MyBrush, MyRect);

                    //Sg += (0.45 * 20.0 * Math.PI) / 790.0;
                    Sg += Mdll.MyS2();
                    x += 0.45;
                }
                Sm -= Math.PI / 10.0;
                Tm();
            }
        }
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: Проблемы работы программ в среде mono в linux

Сообщение pcodr »

v567 писал(а):
26.04.2009 00:37
Выполнимый код правки:

Исходники правки:

Win Xp: 17.5 сек
Debian: 1.8 сек

Результат странным образом отличается от вашего не в пользу windows

v567 писал(а):
26.04.2009 00:37
Однако стоит учесть, что выигрыш в производительности ничто в сравнении с проигрышом в функционале между окнами Windows.Forms и GTK.

Если вы лучше знаете Windows.Forms чем GTK это не значит что у него больше функционал.

И другого не дано, поскольку сама библиотека GTK# разработа теми, кто реализовал Windows.Forms в linux


На сколько я понимаю GTK# это всего лишь биндинг библиотеки GTK на C#, в то время как Windows.Forms пришлось создавать с нуля.
remote system type is unix
Спасибо сказали:
kamre
Сообщения: 243
ОС: Win7/Ubuntu 11.10

Re: Проблемы работы программ в среде mono в linux

Сообщение kamre »

Переписал тест с точками (test1.zip) на Qt. При этом background всегда стирается и отрисовываются точки во внутреннем цикле.

На моем компе вот такие результаты (в секундах) :

Код: Выделить всё

         NoAA    WithAA
WinXP     3.9      6.6
Ubuntu    7.6      20.0


NoAA - no antialiasing
WithAA - with antialiasing

Точки без сглаживания в линуксе отрисовываются почти в 2 раза медленее. А со сглаживаением уже в 3 раза медленее. Результаты вообщем-то ожидаемые: графика в линуксе тормознее.

У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
v567
Сообщения: 92

Re: Проблемы работы программ в среде mono в linux

Сообщение v567 »

pcodr писал(а):
26.04.2009 14:38
Если вы лучше знаете Windows.Forms чем GTK это не значит что у него больше функционал.

Вы вот возьмите VS 2008(2005) или SharpDevelop 3 и посмотрите сколько свойств и методов содержит System.Windows.Forms. Затем возьмите к примеру MonoDevelop 2 и посмотрите сколько свойств и медотов имеет Gtk.Window. Невооруженным глазом видно, что ситуация складывается не в пользу Gtk.


pcodr писал(а):
26.04.2009 14:38
Win Xp: 17.5 сек
Debian: 1.8 сек
Результат странным образом отличается от вашего не в пользу windows

Ваши результаты гораздо более удивительны, чем мои. У всех остальных участников этой темы, насколько я помню, linux показывал худшие результаты в сравнении с windows. Нахожусь в недоумении, что вызвало у Вас такой прирост производительности в linux. :wacko:
В связи с этим если не затруднит прошу ответить на ряд вопросов:
1. Какое время в linux и в XP показывает самый первый тест (test.exe, использующий ZedGraph)?
2. Какая у Вас версия Debian'а?
3. Какая версия mono?
4. Устанавливали mono "из коробки" или по сети?
5. Какая версия VirtualBox'а у Вас установлена?
6. Может ли VirtualBox, по Вашему мнению, влиять на результаты тестов в linux и windows?


kamre писал(а):
26.04.2009 21:32
Точки без сглаживания в линуксе отрисовываются почти в 2 раза медленее. А со сглаживаением уже в 3 раза медленее. Результаты вообщем-то ожидаемые: графика в линуксе тормознее.

К сожалению это так. :(
Спасибо сказали:
pcodr
Сообщения: 283
ОС: Debian

Re: Проблемы работы программ в среде mono в linux

Сообщение pcodr »

1. Какое время в linux и в XP показывает самый первый тест (test.exe, использующий ZedGraph)?
2. Какая у Вас версия Debian'а?
3. Какая версия mono?
4. Устанавливали mono "из коробки" или по сети?
5. Какая версия VirtualBox'а у Вас установлена?
6. Может ли VirtualBox, по Вашему мнению, влиять на результаты тестов в linux и windows?


1. В windows не в mono было около 4.5 сек, в Linux в mono около 300 сек
2. Debian GNU/Linux squeeze/sid
3.

Код: Выделить всё

Mono JIT compiler version 2.0.1 (tarball)
Copyright (C) 2002-2008 Novell, Inc and Contributors. www.mono-project.com
        TLS:           __thread
        GC:            Included Boehm (with typed GC)
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  amd64
        Disabled:      none

4. Из репозитария Debian
5. Вчерашние тесты с Windows XP ради чистоты эксперемента я проводил не в Virtual Box'e а на реальном Windows
6. Может
remote system type is unix
Спасибо сказали:
v567
Сообщения: 92

Re: Проблемы работы программ в среде mono в linux

Сообщение v567 »

pcodr писал(а):
27.04.2009 10:26
1. В windows не в mono было около 4.5 сек, в Linux в mono около 300 сек
2. Debian GNU/Linux squeeze/sid
3.

Код: Выделить всё

Mono JIT compiler version 2.0.1 (tarball)
Copyright (C) 2002-2008 Novell, Inc and Contributors. www.mono-project.com
        TLS:           __thread
        GC:            Included Boehm (with typed GC)
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  amd64
        Disabled:      none

4. Из репозитария Debian
5. Вчерашние тесты с Windows XP ради чистоты эксперемента я проводил не в Virtual Box'e а на реальном Windows
6. Может

Спасибо за ответы. Все встало на свои места. А то я уж было стал хвататься за установку Debian'а.
Спасибо сказали:
mikluxo
Сообщения: 283
ОС: Slackware 12.2

Re: Проблемы работы программ в среде mono в linux

Сообщение mikluxo »

v567 писал(а):
27.04.2009 11:56
Спасибо за ответы. Все встало на свои места. А то я уж было стал хвататься за установку Debian'а.

Если уж за что и хвататься, так это за gentoo, хотя навряд ли там будет намного лучше. Лучше пока windows на VirtualBox(VMWare) поставить, и пользоваться. Пока на линукс нормально не переведут моно, или использовать windows.

Кстати еще один факт, говорящий не впользу того, что Xorg криво рисует, так это то, что под VMWARE(а рисуется тоже самое) прорисывается быстрей => отрисовка реализация моно под линукс кака, imho.
Ich weiss, dass ich nichts weiss, aber wissen Sie es auch?
Завистники на что не взглянут,
подымут вечно лай,
А ты себе своей дорогою ступай,
Полают, да отстанут. Крылов
Спасибо сказали:
v567
Сообщения: 92

Re: Проблемы работы программ в среде mono в linux

Сообщение v567 »

mikluxo писал(а):
27.04.2009 11:58
Если уж за что и хвататься, так это за gentoo, хотя навряд ли там будет намного лучше. Лучше пока windows на VirtualBox(VMWare) поставить, и пользоваться. Пока на линукс нормально не переведут моно, или использовать windows.

Кстати еще один факт, говорящий не впользу того, что Xorg криво рисует, так это то, что под VMWARE(а рисуется тоже самое) прорисывается по другому => отрисовка моно кака, imho.

То есть по Вашему, участники проекта gnome, просидевшие в linux всю жизнь, сделали mono кривым под linux, но при этом, исходя из каких то непонятных соображений, почему то сделали его нормально работающим под windows??? При этом сам проект mono предполагал реализацию платформы .NET именно в linux.

Насчет virualbox и vmware. На мой взгляд система должна работать в естественной среде, а не через посредников в виде прокладок из виртуальных машин неизвестным образом кушающих ресурсы.
Спасибо сказали:
v567
Сообщения: 92

Re: Проблемы работы программ в среде mono в linux

Сообщение v567 »

Вот что ещё надумал.

http://www.mono-project.com/WinForms
System.Windows.Forms in Mono is implemented using System.Drawing. All controls are natively drawn through System.Drawing. System.Windows.Forms implements its own driver interface to communicate with the host OS windowing system. Currently, we have drivers for X11, Win32, and OSX. These drivers translate the native window messages into WndProc compatible messages, to provide as much compatibility with native .Net as possible.

WinForms использует собственный драйверный интерфейс для взаимодействия c оконным интерфейсом операционной системы. Причем эти драйвера для каждой системы (X11, Win32, OSX) свои. Драйвера обеспечивают максимальную совместимость с .NET

http://www.mono-project.com/Drawing
In Windows Mono uses the GDI+ library that is included with the operating system (GDIPLUS.DLL, while in UNIX we provide an implementation of this API in the libgdiplus.so shared library. Our libgdiplus has the same C Flat API as the GDIPLUS.DLL. The C# code that implement System.Drawing is the same for Windows and UNIX builds.

В Windows используется библиотека Microsoft gdiplus.dll, а в Linux GDI+ API реализовано через библиотеку lidgdiplus.so, которая имеет ту же модель C flat API, что и gdiplus.

http://www.mono-project.com/Libgdiplus
Libgdiplus is the Mono library that provide a GDI+ comptible API on non-Windows operating systems. Our implementation uses Cairo to do most of the heavy lifting. Mono's implementation of GDI+ lives in the libgdiplus SVN module and includes it's own internal copy of Cairo (version 1.6.4) but will use a newer system version when available (since Mono 2.4).

Libgdiplus библиотека Mono, реализует GDI+ совместимое API в ОС, отличных от MS-Windows. Реализация libgdiplus использует для ускорения Cairo. Реализация Mono GDI+ расположена в модуле libgdiplus SVN и содержит Cairo версии 1.6.4, но использует новую версию, если она доступна.


В итоге получили следующее:
Для Windows: WinForms -> System.Drawing -> GDI+ (Microsoft gdiplus.dll)
Для Linux: WinForms -> System.Drawing -> GDI+ (Ximian libgdiplus.so) -> Cairo
Программисты Ximian, очевидно, учли корявую архитектуру X-ов и заложили вывод 2D графики с использованием библиотеки Cairo. Вероятно, Cairo в настоящих версиях Mono по каким-то причинам не работает так, как было запланировано.
Использование разных реализаций библиотек GDI+ и заторможенность X-ов привели к различиям в скоростях отрисовки 2-х мерной графики в linux и windows.

Отправил сообщение с проблемами на go-mono.com/forums. :wacko:
Спасибо сказали:
Аватара пользователя
TuxWare
Сообщения: 637
ОС: Windows 7

Re: Проблемы работы программ в среде mono в linux

Сообщение TuxWare »

kamre писал(а):
26.04.2009 21:32
Переписал тест с точками (test1.zip) на Qt. При этом background всегда стирается и отрисовываются точки во внутреннем цикле.

На моем компе вот такие результаты (в секундах) :

Код: Выделить всё

         NoAA    WithAA
WinXP     3.9      6.6
Ubuntu    7.6      20.0


NoAA - no antialiasing
WithAA - with antialiasing

Точки без сглаживания в линуксе отрисовываются почти в 2 раза медленее. А со сглаживаением уже в 3 раза медленее. Результаты вообщем-то ожидаемые: графика в линуксе тормознее.



Я получаю 2.2c в режиме NoAA и 1.98с в режиме WithAA (т.е с учетом погрешностей время равное) с минимальными изменениями кода.
Изменения
qtpoints.pro - добавлена строка
QT += opengl
widget.h - добавлена строка
#include <QGLWidget>

widget.h - изменена строка
class Widget : public QWidget
на
class Widget : public QGLWidget

widget.cpp - изменена строка
Widget::Widget(QWidget *parent): QWidget(parent), active(false), antialiasing(false)
на
Widget::Widget(QWidget *parent): QGLWidget(parent), active(false), antialiasing(false)

widget.cpp - вместо постоянных вычислений введены константы
(0.45 * 20.0 * M_PI) / 790.0 в -> sg += (0.45 * 20.0 * M_PI) / 790.0;
20.0 * M_PI в -> while (fabs(sg) < 20.0 * M_PI) {
Спасибо сказали:
kamre
Сообщения: 243
ОС: Win7/Ubuntu 11.10

Re: Проблемы работы программ в среде mono в linux

Сообщение kamre »

TuxWare писал(а):
28.04.2009 02:35
Я получаю 2.2c в режиме NoAA и 1.98с в режиме WithAA (т.е с учетом погрешностей время равное) с минимальными изменениями кода.


Время только в линуксе без сравнения с виндой не очень интересно. А сравнение с моими временами не корректно, т.к. разные конфигурации у меня и у вас.


TuxWare писал(а):
28.04.2009 02:35
widget.cpp - изменена строка
Widget::Widget(QWidget *parent): QWidget(parent), active(false), antialiasing(false)
на
Widget::Widget(QWidget *parent): QGLWidget(parent), active(false), antialiasing(false)

Кстати так не совсем правильно инициализировать QGLWidget, т.к. не будет работать сглаживание. Нужно вот так: QGLWidget(QGLFormat(QGL::SampleBuffers), parent)

TuxWare писал(а):
28.04.2009 02:35
widget.cpp - вместо постоянных вычислений введены константы
(0.45 * 20.0 * M_PI) / 790.0 в -> sg += (0.45 * 20.0 * M_PI) / 790.0;
20.0 * M_PI в -> while (fabs(sg) < 20.0 * M_PI) {

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

И еще попробуйте рисовать в целочисленных координатах и без сглаживания (как у топик стартера это делается). Для этого нужно вместо QRectF поставить QRect. У меня так значительно быстрее рисуется, правда еще не сравнивал WinXP и Ubuntu.
Спасибо сказали:
Аватара пользователя
TuxWare
Сообщения: 637
ОС: Windows 7

Re: Проблемы работы программ в среде mono в linux

Сообщение TuxWare »

kamre писал(а):
28.04.2009 12:04
Кстати так не совсем правильно инициализировать QGLWidget, т.к. не будет работать сглаживание. Нужно вот так: QGLWidget(QGLFormat(QGL::SampleBuffers), parent)
....
И еще попробуйте рисовать в целочисленных координатах и без сглаживания (как у топик стартера это делается). Для этого нужно вместо QRectF поставить QRect. У меня так значительно быстрее рисуется, правда еще не сравнивал WinXP и Ubuntu.


С включением сампл и дабл буферов скорость обработки незначительно возрастает (т.е. время выполнения уменьшается), потому я прибегнул к дефолтной инициализации QGLWidget. С целочисленными я попробую. Но я лично не вижу проблем с графикой в линукс и какой то тормознутости. Есть только возможность, что на одних видеодрайверах может работать медленнее чем на других, ну с кем не бывает.
Спасибо сказали:
kamre
Сообщения: 243
ОС: Win7/Ubuntu 11.10

Re: Проблемы работы программ в среде mono в linux

Сообщение kamre »

TuxWare писал(а):
28.04.2009 15:46
Но я лично не вижу проблем с графикой в линукс и какой то тормознутости. Есть только возможность, что на одних видеодрайверах может работать медленнее чем на других, ну с кем не бывает.


Измерять скорость на QGL виджетах какбы не совсем корректно, т.к. обычные приложения их не используют и все рисуют через XRender pipeline, который настолько тормозит, что Pure Software pipeline (отрисовка без ресурсов видеокарты и только блиттинг картинки в конце) его обгоняет. Кроме того качество отрисовки и скорость OpenGL сильно зависит от драйверов, с которыми в линуксе все не очень хорошо.


Переписал вот еще на Java:

.txt нужно убрать, т.к. форум не дает напрямую jar добавить. Попозже выложу результаты на моем компе в Win/Lin.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
Warlornhor
Сообщения: 428
ОС: openSUSE 12.3

Re: Проблемы работы программ в среде mono в linux

Сообщение Warlornhor »

kamre, Вы уверены, что пример рабочий, ругается на наличие main класса. Какая версия JVM должна быть?
Спасибо сказали:
kamre
Сообщения: 243
ОС: Win7/Ubuntu 11.10

Re: Проблемы работы программ в среде mono в linux

Сообщение kamre »

Warlornhor писал(а):
28.04.2009 16:28
kamre, Вы уверены, что пример рабочий, ругается на наличие main класса.

Только что скачал, переименовал в jpoints.jar и запустил по double click. Все работает. Там внутри если что исходник есть, но оно и так должно работать, это же java.

java version "1.6.0_13"
Java&#153; SE Runtime Environment (build 1.6.0_13-b03)
Java HotSpot&#153; Client VM (build 11.3-b02, mixed mode, sharing)
Спасибо сказали:
v567
Сообщения: 92

Re: Проблемы работы программ в среде mono в linux

Сообщение v567 »

TuxWare писал(а):
28.04.2009 15:46
Но я лично не вижу проблем с графикой в линукс и какой то тормознутости. Есть только возможность, что на одних видеодрайверах может работать медленнее чем на других, ну с кем не бывает.

Вы и не увидите тормознутости используя opengl компоненты в 2D графике. Тормоза начнутся если не использовать функции библиотеки opengl и в этом случае linux в сравнении с windows работает медленнее.
Спасибо сказали:
Warlornhor
Сообщения: 428
ОС: openSUSE 12.3

Re: Проблемы работы программ в среде mono в linux

Сообщение Warlornhor »

Вы и не увидите тормознутости используя opengl компоненты в 2D графике. Тормоза начнутся если не использовать функции библиотеки opengl и в этом случае linux в сравнении с windows работает медленнее.

А здесь имеет смысл вспомнить о программистах которые это все реализуют и "кривизне" их рук...
Только что скачал, переименовал в jpoints.jar и запустил по double click. Все работает. Там внутри если что исходник есть, но оно и так должно работать, это же java.

У меня просто версия 1.4 здесь, дома проверю...
Спасибо сказали:
kamre
Сообщения: 243
ОС: Win7/Ubuntu 11.10

Re: Проблемы работы программ в среде mono в linux

Сообщение kamre »

Warlornhor писал(а):
28.04.2009 16:39
А здесь имеет смысл вспомнить о программистах которые это все реализуют и "кривизне" их рук...


Тогда следует признать, что почти у всех программистов в opensource что-то не так с "кривизной" рук, т.к. большая часть GUI программ отрисовывают все через Xorg без использования OpenGL. И у программистов из SUN тоже самое, т.к. они не включают по умолчанию OpenGL pipeline для Java, хотя в винде уже через DirectX отрисовка по умолчанию включается для большинства видеокарт. Да и писателям видео-драйверов тоже "кривизна" рук мешает похоже, т.к. до сих пор открытые драйвера по открытой спецификации для видеокарт от intel работают хуже, чем проприетарные под виндой.
Спасибо сказали:
Warlornhor
Сообщения: 428
ОС: openSUSE 12.3

Re: Проблемы работы программ в среде mono в linux

Сообщение Warlornhor »

Позволю с Вами не согласиться.
1) Все зависит от задачи, потому что если есть задача рисовать, то рисовать должна программа которая умеет только рисовать, но уж очень быстро и качественно.
2) Про intel не надо, у меня была возможность сравнить и разницы я не увидел.
3) Про скорость обработки данных я писал выше, пример вполне живой, gnuplot умирает OutOfMemoryException, а программа на Java все это поглощает и выдает результат через пару секунд (конечно не в том виде в котором gnuplot, но он просто умирает).
Спасибо сказали:
Аватара пользователя
TuxWare
Сообщения: 637
ОС: Windows 7

Re: Проблемы работы программ в среде mono в linux

Сообщение TuxWare »

TuxWare писал(а):
28.04.2009 02:35
Я получаю 2.2c в режиме NoAA и 1.98с в режиме WithAA (т.е с учетом погрешностей время равное) с минимальными изменениями кода.


Виндовс виста, компьютер другой но процессор, материнка и память одинаковые, единственное с виндовсом установлена профи. карта "nvidia quadro" класса high-end, а там где линукс просто игровая карточка GF9600 (короче бирюлька). И при всем этом имеем.
При работе на стандартный QWidget:
1.965 (noAA) 3.12 (AA)
При работе на QGLWidjet(QGLFormat(QGL::SampleBuffers), parent):
3.895 (noAA) 3.318 (AA) ( и цитируя "OpenGL сильно зависит от драйверов, с которыми в линуксе все не очень хорошо"? Вот где не очень хорошо)

Полный слив зачтен.
Спасибо сказали:
v567
Сообщения: 92

Re: Проблемы работы программ в среде mono в linux

Сообщение v567 »

Warlornhor писал(а):
28.04.2009 16:55
Позволю с Вами не согласиться.
1) Все зависит от задачи, потому что если есть задача рисовать, то рисовать должна программа которая умеет только рисовать, но уж очень быстро и качественно.

Позволю себе в свою очередь не согласиться с Вами. Программа только тогда сможет рисовать быстро и качественно когда графический пользовательскии интерфейс оконной системы (в данном случае X Window) будет использовать видеокарту быстро и качественно. К сожалению в linux этого пока не наблюдается.
Спасибо сказали:
v567
Сообщения: 92

Re: Проблемы работы программ в среде mono в linux

Сообщение v567 »

TuxWare писал(а):
28.04.2009 16:58
Виндовс виста, компьютер другой но процессор, материнка и память одинаковые, единственное с виндовсом установлена профи. карта "nvidia quadro" класса high-end, а там где линукс просто игровая карточка GF9600 (короче бирюлька).

.....
Полный слив зачтен.

Теперь о сливе.
Вы возьмите и сделайте тесты на одной машине. А то как то странно получается: пк разные, видеокарты разные, вместо XP почему то берете висту (не самый удачный вариант windows). И при всем при этом делаете какие то выводы.
Спасибо сказали:
Аватара пользователя
TuxWare
Сообщения: 637
ОС: Windows 7

Re: Проблемы работы программ в среде mono в linux

Сообщение TuxWare »

v567 писал(а):
28.04.2009 18:11
TuxWare писал(а):
28.04.2009 16:58
Виндовс виста, компьютер другой но процессор, материнка и память одинаковые, единственное с виндовсом установлена профи. карта "nvidia quadro" класса high-end, а там где линукс просто игровая карточка GF9600 (короче бирюлька).

.....
Полный слив зачтен.

Теперь о сливе.
Вы возьмите и сделайте тесты на одной машине. А то как то странно получается: пк разные, видеокарты разные, вместо XP почему то берете висту (не самый удачный вариант windows). И при всем при этом делаете какие то выводы.

А где мне взять XP, для меня это проблема. Подождем кто то прогонит, увидим.
Спасибо сказали: