Здравствуйте, гость ( Вход | Регистрация )

76 страниц V « < 56 57 58 59 60 > »   
Тема закрытаОткрыть новую тему
> Пожелания, Предложения по развитию сюда
Cockney
сообщение 28.3.2016, 16:51
Сообщение #1141


********

Master
Сообщений: 1.404
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 22549
Пользователь №: 16.156



задержка стоит в 0,везде где только можно.


а если нужны глобальные данные?тут процедурка не подходит.


вообще,больше тут вопрос к кнайту.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 28.3.2016, 20:10
Сообщение #1142


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29678
Пользователь №: 11.279



Цитата
set logging Начинаю инициализацию 1048576 элементов

Не элементов, а байт.
Цитата
Реально ли ускорить?

Сгенерируй один раз и загружай тхт.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 28.3.2016, 20:14
Сообщение #1143


********

Master
Сообщений: 1.404
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 22549
Пользователь №: 16.156



а мне вот элементы нравятся.
----
ну а если во время каждой отработки скрипта генерируются разные данные?все,ничем не помочь?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 28.3.2016, 20:25
Сообщение #1144


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29678
Пользователь №: 11.279



ок. Они тебе наравятся. Но какая связь с этим магическим числом 1048576? Массивы предполагается передавать по ссылке и глубоко пофигу количество элементов внутри. Нужно реально осознавать, что сейчас пилот парсит при этой операции каждый раз все строки, что не есть хорошо. Так же неплохо понимать, что каждый элемент массива - это стринг. Хз как в делфе, но в с++ это означает, что по факту создания строки будет сразу же зарезервировано памяти от 16 до 32 байт на каждый элемент. Я допускаю, что это может быть необходимо, более того я целиком за ускорение подобных операций и за прекомпиляцию хотя бы каких-то конструкций, но где реально использовать в рамках пилота такие массивы? Чую ты что-то интересное затеял)

set size (%data 1048576 1)
перед инициализацией выполни. Немного должно ускорить, особенно при большом количестве элементов.

ну и после
Цитата
set size (%data 1048576 1)

можно передать указатель в плагин и заполнить массив очень шустро. Это из тяжелой артиллерии.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 28.3.2016, 21:18
Сообщение #1145


********

Master
Сообщений: 1.404
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 22549
Пользователь №: 16.156



Насквозь видишь). Да, есть задумка, но о ней позже. Интересная она или нет....кто знает что выйдет?.


В делфи - 4 байта слежебное(как указатель), а дальше занимает фактический размер строки.


Данные передаются из пилота в плагин(а за обратный способ спасибо, не думал об этом). Но вспомнилось, что не все же на 36.1 сидят. Да и у самого порой нет под рукой такой версии. Значит приходится выкручиваться такими костылями...вот и спрашиваю, как получше...но никак, видимо.

Кстати насчет заполнения массива из плагина. А не получим ли AV из-за разных мем-менеджеров?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 28.3.2016, 21:25
Сообщение #1146


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29678
Пользователь №: 11.279



Цитата
А не получим ли AV из-за разных мем-менеджеров?

По идее при правильном подходе не должны. Тут главное структуру точно воспроизвести. Тут единственный реально опасный момент - реализация стрингов. Если в делфи она одна - проблем нет. В варианте с с++ это было бы очень страшно, т.к. реализаций куча, пилот одуреет. В любом случае осталась бы возможность вручную собрать из чистых си строк(массив чаров) необходимую строку, вручную дописать указатели, размер и получить струтуру идентичную стрингу на делфи.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 28.3.2016, 21:50
Сообщение #1147


********

Master
Сообщений: 1.404
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 22549
Пользователь №: 16.156



Если не ошибаюсь, то получится как-то так : в с++ создаем аналог делфи-стринг, то бишь, задаем массив чаров + последний чар терминальный нуль. дальше получаем адрес всего массива, и отдаем пилоту. пилот же, читая значения, натыкается на наш адрес и обращается в никуда, ибо в его мем-менеджере нет упоминания о таком участке памяти. Чтобы такая схемка прокатила нужно, наверное, инжектить плагин, но тут я уже не очень много знаю.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 28.3.2016, 22:04
Сообщение #1148


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29678
Пользователь №: 11.279



Цитата
Если не ошибаюсь, то получится как-то так : в с++ создаем аналог делфи-стринг, то бишь, задаем массив чаров + последний чар терминальный нуль. дальше получаем адрес всего массива, и отдаем пилоту. пилот же, читая значения, натыкается на наш адрес и обращается в никуда, ибо в его мем-менеджере нет упоминания о таком участке памяти. Чтобы такая схемка прокатила нужно, наверное, инжектить плагин, но тут я уже не очень много знаю.

Не-не-не. У нас же есть прекрасный:
set size (%arr x y)
Т.е. после этого массив уже создан и прошла аллокация. Мы же передаем в плагин уже существующий массив. Правда тут возникают вопросы о допустимой длине записываемой строки. Помнится мне, что кнайт 128 байт под элемент массива выделял при создании. По поводу всей этой проблемы можно сделать простейший тест:
1) Создаем в дллке глобальную переменную, записываем в нее некоторое значение.
2) Плагином возвращаем указатель на эту переменную.
3) Через readmem смотрим, что там по этому адресу находится.
Схема прошла - значит работать будет.

Тем не менее остается проблема размера элемента массива. Если мы начнем грубо изменять этот размер я не уверен, что произойдет и насколько пилот подхватит результат и не запорем ли мы какие-либо данные банально из-за области видимости переменных и высвобождения памяти после завершения функции(читай придется хранить данные в виде глобального массива структур). Однако мы можем создать некоторый массив структур аналогичный пилотовскому и передав указатель на пилотовский массив наглым образом подменить указатели. При таком варианте оно обязано заработать, однако мы получаем некотрые утечки памяти, т.к. не освободили зарезервированную пилотом память. Как лучше ее освободить в делфи и не уничтожить структуру я хз.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 29.3.2016, 21:11
Сообщение #1149


********

Master
Сообщений: 1.404
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 22549
Пользователь №: 16.156



128, а потом урезается до истинной длины, не?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
WKnight
сообщение 29.3.2016, 21:18
Сообщение #1150


********

Разработчик UO Pilot'а
Сообщений: 1.639
Регистрация: 9.1.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 4.688



Там тип string, который по сути pchar.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 29.3.2016, 21:31
Сообщение #1151


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29678
Пользователь №: 11.279



Цитата
128, а потом урезается до истинной длины, не?

Там reserved, а потом надо типа делать resize.
Про 128 могу ошибаться, но что-то помнится мне, что было именно такое изменение.

Хм... По диспетчеру задач получается следующее:
set size (%data 10485760)
4 байта на элемент(видимо только указатели)
set size (%data 10485760 1)
выделяет 20 байт
set size (%data 10485760 2)
выделяет 28.6 байт на строку. Хз откуда там 0.6.
set size (%data 10485760 10)
выделяет 61.4 байт на строку.

Ребусы какие-то.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 29.3.2016, 21:37
Сообщение #1152


********

Master
Сообщений: 1.404
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 22549
Пользователь №: 16.156



Хм. Мне казалось, что память, которую жрут дельфовые программы, можно отследить только по КБ, а не байтам. Ибо так они устроены. А то что ты видишь - скорее всего работа внутренних механизмов.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 29.3.2016, 21:39
Сообщение #1153


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29678
Пользователь №: 11.279



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


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 29.3.2016, 21:46
Сообщение #1154


********

Master
Сообщений: 1.404
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 22549
Пользователь №: 16.156



так ты среднее значение считаешь?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 29.3.2016, 21:47
Сообщение #1155


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29678
Пользователь №: 11.279



(стало-было)/количество_строк


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 29.3.2016, 21:52
Сообщение #1156


********

Master
Сообщений: 1.404
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 22549
Пользователь №: 16.156



В среднем 20б уходит на строку.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 29.3.2016, 21:57
Сообщение #1157


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29678
Пользователь №: 11.279



А ты столбцы отличные от 1 попробуй задать и получится неприятно.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 29.3.2016, 22:04
Сообщение #1158


********

Master
Сообщений: 1.404
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 22549
Пользователь №: 16.156



Так а смысл гадать тут. Нужно ждать ответ кнайта, что он молвит. А так тут и 20б для пустой строки слишком.


А можно и не ждать, 90% это делает не кнайт, а сам внутренний код.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 29.3.2016, 22:12
Сообщение #1159


***********

Модератор UOPilot
Сообщений: 9.745
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 29678
Пользователь №: 11.279



структура массива:
aDescr: shortstring ;
aValue: array of array of string;

Ну давай считать. Создали мы n строк по 1 столбцу. На каждую строку у нас массив с указателями на столбцы, это дает 4 байта на строку, вероятно еще записывается размер этого массива: +4 байта. Указатель указывает на стринг, который суть есть указатель 4 байта, 4 байта под размер. Итого явным образом 16 байт нашли из 20.

При наполнении массива даже по 1 символу происходит постоянное увеличения занимаемой памяти пилотом. Т.е. резерва все-таки нет вообще никакого.

Сообщение отредактировал DarkMaster - 29.3.2016, 22:13


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Cockney
сообщение 29.3.2016, 22:20
Сообщение #1160


********

Master
Сообщений: 1.404
Регистрация: 22.6.2013
Группа: Пользователи
Наличность: 22549
Пользователь №: 16.156



что такое aDesrc?

aValue: array of array of string;

Это так понимаю, двойной массив? Т.е. строка-столбец?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

76 страниц V « < 56 57 58 59 60 > » 
Тема закрытаОткрыть новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 20.7.2025, 4:13
Designed by Nickostyle