Небыстрая работа Create.
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Небыстрая работа Create.
C8.0.9759, ABC. На экране нужно вывести много линий и боксов (порядка 6-7 тысяч). Вывод раньше был через LINE() и т.д. Быстродействие устраивало. Решили перевести вывод чрез CREATE. Время вывода увеличилось очень сильно. Создал уже тестовый пример. Оказалось время через CREATE больше в 10 раз где-то. Народ как думает - проблема версии или постоянная проблема? А может можно замену CREATE найти, в WinAPI, например.
We are hard at work… for you. 

- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: Небыстрая работа Create.
Я так понимаю, CREATE-ом Вы создаёте полноценные контролы (7 тысяч, мама дорогая!). Посмотрите шаблоны svgraph, как там делается, вполне прилично рисуют.
С уважением, ДП
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Небыстрая работа Create.
Посмотрел. SV рисуют всё line() и box(). Дело вот в чём. У нас так и было. Много статичных линий и блоков, и немного динамичных линий же и блоков, у которых надо менять цвет, местоположение, создавать, удалять их. Но, при переносе этого добра из 6.3 в 8.0 оказалось, что линии, например, созданные CREATE, лежа под линиями, созданными LINE(). Думали - CREATE нам поможет. Ан нет. Тогда откатываемся назад и пытаемся понять, почему линии ложатся под.
Самое обидное, что, убивая таким образом время, устойчивого решения можно не найти - в следующий версии опять может быть как в 6.3.
Самое обидное, что, убивая таким образом время, устойчивого решения можно не найти - в следующий версии опять может быть как в 6.3.
We are hard at work… for you. 

-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Небыстрая работа Create.
Ни фига, щастья нет. Вот простой пример:
Я ожидаю, что синий прямоугольник перекроет красную линию. Ничего подобного - красная линия наверху. Есть подозрение, что в другой версии по-другому.
Код: Выделить всё
setpencolor(COLOR:Red)
line(50,100,500,0)
0{prop:Buffer} = 1
con# = create(0,CREATE:Box)
setposition(con#,200,50,20,150)
con#{PROP:Color,1} = COLOR:Navy
con#{PROP:Fill} = COLOR:Navy
unhide(con#)
We are hard at work… for you. 

Re: Небыстрая работа Create.
Я, значит, как лох последний читаю слёзные жалобы о тормозах не по-детски. А тут ещё линия не в порядке, вона как... А если создать сначала линию, а уже потом прямоугольник. И оба по Create. Тогда прямоугольник как контрол с большим номером перекроет линию.
Кстати. Бяда... Программа падает на вызове ColorDialog под win8.1/64 Мож кто что подскажет?
Кстати. Бяда... Программа падает на вызове ColorDialog под win8.1/64 Мож кто что подскажет?
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Небыстрая работа Create.
Проверил в 9.0. Такая же фигня. По Create всё ровно и хорошо. Но при этом возвращаемся к моему первому посту - создание 6 тысяч линий и прямоугольников занимает порядка 3 сек, что в 10 (Десять!!!) раз больше, чем через line() и box(). И как объяснить пользователю, что при переходе на новую версию быстродействие так сильно упало? И где плюсы при при этом?
We are hard at work… for you. 

Re: Небыстрая работа Create.
Возвращаемся
А Prop:Buffer перед Create установил в 1 ? В документации было выражение "Dramatically increased..."
Иначе некошерно.
Другой вариант - в момент отрисовки спрятать само окно, а после вернуть на место
Впрочем, это относилось к CW6, в CW9 пока некопенгаген...

А Prop:Buffer перед Create установил в 1 ? В документации было выражение "Dramatically increased..."
Иначе некошерно.
Другой вариант - в момент отрисовки спрятать само окно, а после вернуть на место
Код: Выделить всё
0{Prop:Buffer}=1 ! Или Hide(0)
Loop
Line# = Create(0,Create:Line)
....
Unhide(Line#)
Box# = Create(0,Create:Box)
....
Unhide(Box#)
End
! Может быть, Unhide(0). Prop:Buffer не трогать!
Display()
-
- ✯ Ветеран ✯
- Сообщения: 5161
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Re: Небыстрая работа Create.
Нашёл некий вариант, более менее устраивающий. Оказалось, что регион встаёт наверх.
We are hard at work… for you. 
