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 (например так, как это сделано у меня). Это позволит провести хоть какое-то сравнение.
Для
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();
}
}
У вас нет необходимых прав для просмотра вложений в этом сообщении.