зенно 5 хуже зенно 3 ?

limpopo

Client
Регистрация
06.07.2011
Сообщения
42
Благодарностей
2
Баллы
0
сидел раньше на зенно 3.6.. был тяжёлый шаблон работал с процентом успеха ~40%, среднее время успешного выполнения шаблона было ~1.5 часа. перешёл на зенно 5 с надеждой уменьшить время выполнения шаблона плюс за счет того что зенно 5 ест меньше ресурсов надеялся добавить больше потоков и в общем увеличить производительность.

После двух недель ковыряния, правки шаблона под зенно 5 получил следующее :процент успеха упал до <10%, время успешного выполнения с 1.5 часа поменялось на 3-4 часа !!!!


процент успеха упал думаю по причине встроенных тайм аутов в зенно 5. (20 сек мах на загрузку страницы) т.е. там где зенно 3.6 терпеливо ждал загрузки страницы по минуте и более и продолжал не спеша своё дело, зенно 5 ждёт 20 секунд - не дожидается результата и забивает . отсюда и падение процента успешных выполнений.

помимо этого поиск элементов в дереве элементов в зенно 5 реализован хуже чем в зенно 3.6 (я так думаю), эксперимент привиденный ниже этот факт подтверждает (я так думаю).

Эксперимент: простой шаблон заходит на форум, ищет ссылки и записывает время затраченное на поиск элементов с тагом "а" в дереве элементов:
в файл c:/result.txt пишется кол-во успешных выполнений и время в формате кол-во_успешных_выполнений:время

PHP:
		public readonly object locker= new object();
		public int ExecuteCode(Instance instance, IZennoPosterProjectModel project)
		{
			int executionResult = 0;
			
			
			instance.MainTab.Navigate("http://zennolab.com/discussion/showthread.php?11044-ZennoPoster-5-%28%D0%B1%D0%B8%D0%BB%D0%B4-5-0-4-1-%D0%BE%D1%82-10-08-2013%29-hotfix-%D0%B4%D0%BB%D1%8F-5-0-4-1");
			instance.MainTab.WaitDownloading();




//calculating instance.MainTab.FindElementsByTags("a") executing time
			DateTime t = DateTime.Now;
			HtmlElementCollection hec = instance.MainTab.FindElementsByTags("a");
			int time = (int)(DateTime.Now-t).TotalMilliseconds;

//if ok- save time			
			int i = hec.Count;
			if(i==340)
				Save(time);
			Thread.Sleep(23*1000);
			return executionResult;
		}
		public void Save(int time)
		{
			lock(locker)
			{
				TextReader tr = new StreamReader("c://result.txt");
				string s =tr.ReadLine();
				int i= Convert.ToInt32(s.Split(':')[0])+1;
				int totaltime=Convert.ToInt32(s.Split(':')[1]);
				tr.Close();
				TextWriter tw= new StreamWriter("c://result.txt",false);
				s=i+":"+(totaltime+time);
				tw.WriteLine(s);
				tw.Close();
			}
		}



на сервере 1 где стоит зенно 5 , 30 потоков дали результат следующий: 1238:89546 (среднее время 89546/1238=72.33)
на сервере 2 который слабее сервера 1 и стоит зенно 3.6 этот же шаблон в 30 потоков дал результат: 504:7697 (среднее время 7697/504=15.27)!!!!
отсюда и увеличение времени выполнения шаблона с 1.5 часа до 3-4 часов.

Либо я чего то не понимаю , либо в зенно 5 надо поковырять настройки (делал уже это десятки раз), но по моему зенно 5 не смотря на кучу добавленного функционала и устранённых багов в конечном счёте все же хуже чем зенно 3.6.. по крайней мере есть огромное желание поставить на сервер 1 зенно 3.6.
 

Mandyson

Client
Регистрация
03.06.2012
Сообщения
410
Благодарностей
84
Баллы
28
А что мешает поставить больше 20 сек на загрузку страницы?
По поводу оптимизации - да, этого не хватает. У меня, например, работает всё норм, но у друга, который использует слабенький интернет с частыми разрывами и комп не ахти один и тот же шаблон может выполняться с разным успехом. Очень не хватает функции повторного прохождения последних 2-3 шагов при ошибке или т.п.
В остальном же 5ка конечно лучше 3.6:-)
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Может не оптимизировали что. Отключили все лишнее? Какая страница у вас загружается 1-2 минуты?

Если обмен данными с сервером идет, следующий экшен не должен начинать работу. Нужен пример, если это не так.

По поводу оптимизации - да, этого не хватает. У меня, например, работает всё норм, но у друга, который использует слабенький интернет с частыми разрывами и комп не ахти один и тот же шаблон может выполняться с разным успехом.
Имхо это логично.

Очень не хватает функции повторного прохождения последних 2-3 шагов при ошибке или т.п.
Последние 2-3 шага всегда разные. Это не универсально. Просто если стремитесь к идеалу, то всегда можно допилить до него шаблон. С проверками, повторными отработками при ошибках и так далее. Это уже все зависит от логики построения проекта.
 

limpopo

Client
Регистрация
06.07.2011
Сообщения
42
Благодарностей
2
Баллы
0
по какой то причине пост не отображается целиком, попробую запостить в две части
 

limpopo

Client
Регистрация
06.07.2011
Сообщения
42
Благодарностей
2
Баллы
0
сидел раньше на зенно 3.6.. был тяжёлый шаблон работал с процентом успеха ~40%, среднее время успешного выполнения шаблона было ~1.5 часа. перешёл на зенно 5 с надеждой уменьшить время выполнения шаблона плюс за счет того что зенно 5 ест меньше ресурсов надеялся добавить больше потоков и в общем увеличить производительность.

После двух недель ковыряния, правки шаблона под зенно 5 получил следующее :процент успеха упал до <10%, время успешного выполнения с 1.5 часа поменялось на 3-4 часа !!!!


процент успеха упал думаю по причине встроенных тайм аутов в зенно 5. (20 сек мах на загрузку страницы) т.е. там где зенно 3.6 терпеливо ждал загрузки страницы по минуте и более и продолжал не спеша своё дело, зенно 5 ждёт 20 секунд - не дожидается результата и забивает . отсюда и падение процента успешных выполнений.

помимо этого поиск элементов в дереве элементов в зенно 5 реализован хуже чем в зенно 3.6 (я так думаю), эксперимент привиденный ниже этот факт подтверждает (я так думаю).
 

limpopo

Client
Регистрация
06.07.2011
Сообщения
42
Благодарностей
2
Баллы
0
Эксперимент: простой шаблон заходит на форум, ищет ссылки и записывает время затраченное на поиск элементов с тагом "а" в дереве элементов:
в файл c:/result.txt пишется кол-во успешных выполнений и время в формате кол-во_успешных_выполнений:time

PHP:
		public readonly object locker= new object();
		public int ExecuteCode(Instance instance, IZennoPosterProjectModel project)
		{
			int executionResult = 0;
			
			
			instance.MainTab.Navigate("http://zennolab.com/discussion/showthread.php?11044-ZennoPoster-5-%28%D0%B1%D0%B8%D0%BB%D0%B4-5-0-4-1-%D0%BE%D1%82-10-08-2013%29-hotfix-%D0%B4%D0%BB%D1%8F-5-0-4-1");
			instance.MainTab.WaitDownloading();




//calculating instance.MainTab.FindElementsByTags("a") executing time
			DateTime t = DateTime.Now;
			HtmlElementCollection hec = instance.MainTab.FindElementsByTags("a");
			int time = (int)(DateTime.Now-t).TotalMilliseconds;

//if ok- save time			
			int i = hec.Count;
			if(i==340)
				Save(time);
			Thread.Sleep(23*1000);
			return executionResult;
		}
		public void Save(int time)
		{
			lock(locker)
			{
				TextReader tr = new StreamReader("c://result.txt");
				string s =tr.ReadLine();
				int i= Convert.ToInt32(s.Split(':')[0])+1;
				int totaltime=Convert.ToInt32(s.Split(':')[1]);
				tr.Close();
				TextWriter tw= new StreamWriter("c://result.txt",false);
				s=i+":"+(totaltime+time);
				tw.WriteLine(s);
				tw.Close();
			}
		}



на сервере 1 где стоит зенно 5 , 30 потоков дали результат следующий: 1238:89546 (среднее время 89546/1238=72.33)
на сервере 2 который слабее сервера 1 и стоит зенно 3.6 этот же шаблон в 30 потоков дал результат: 504:7697 (среднее время 7697/504=15.27)!!!!
отсюда и увеличение времени выполнения шаблона с 1.5 часа до 3-4 часов.

Либо я чего то не понимаю , либо в зенно 5 надо поковырять настройки (делал уже это десятки раз), но по моему зенно 5 не смотря на кучу добавленного функционала и устранённых багов в конечном счёте все же хуже чем зенно 3.6.. по крайней мере есть огромное желание поставить на сервер 1 зенно 3.6.
 

limpopo

Client
Регистрация
06.07.2011
Сообщения
42
Благодарностей
2
Баллы
0
Может не оптимизировали что. Отключили все лишнее? Какая страница у вас загружается 1-2 минуты?
ничего лишнего нету, грузить надо всё.... зенно пятый грузит затем выдает белую пустую страницу и пишет готово, без проксей зенно 5 всё прогружает, в зенно 3.6 с тем же набором проксей всё нормально,отсюда я и предположил что дело всё в тайм ауте который в пятерки есть а в тройке нет. т.е. по моему мнению сделать опцию тайм аут по больше (до нескольких минут) просто необходимо. но это я так понимаю легко поправимо проблема вторая (про поиск элементов в дереве) куда более существенна.
 

limpopo

Client
Регистрация
06.07.2011
Сообщения
42
Благодарностей
2
Баллы
0

limpopo

Client
Регистрация
06.07.2011
Сообщения
42
Благодарностей
2
Баллы
0
Если обмен данными с сервером идет, следующий экшен не должен начинать работу. Нужен пример, если это не так.
в некоторых ресурсах банеры во фрейме авто обнавляются , на таком ресурсе в тройке следующий код может вернуть значение 2;
Код:
			instance.MainTab.Navigate();
			instance.MainTab.WaitDownloading();
			
			HtmlElement he = instance.MainTab.FindElementByAttribute(element1);
			if(he.IsVoid) return -1;
			Thread.Sleep(10*1000);
			// банер обнавился зенно переинициализировал дерево елементов
			
                        if(he.IsVoid) return 2;
Но я не считаю это проблемой и это лехко обойти, просто оффтопик пример того что обмен данными с сервером идет в то время как зенно продолжает что то делать. на пятом зенно этот момент не проверял кстати.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113

limpopo

Client
Регистрация
06.07.2011
Сообщения
42
Благодарностей
2
Баллы
0

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)