Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26173
Рейтинг: 2128
#16: 2012-04-04 15:31:01 ЛС | профиль | цитата
ser_davkin писал(а):
снова перебором, но это снизит производительность?

Везде поиск сделан перебором
------------ Дoбавленo в 15.25:
Кстати, ты не озвучил размерность матрицы
------------ Дoбавленo в 15.31:
ser_davkin, тебе надо Tad-a просить, он у нас специалист по быстрому доступу к данным.

Но размерность все равно озвучь
карма: 22

0
Ответов: 1536
Рейтинг: 176
#17: 2012-04-04 15:38:27 ЛС | профиль | цитата
nesco писал(а):
Кстати, ты не озвучил размерность матрицы
разве это что-то меняет? Определение размерности как, в том же, Matrix.
nesco, взгляни, мне не нужна визуализация, все что я жму и выделяю в схеме должно происходить внутри процесса. Набросал на скорую руку.
Add(MainForm,5818658,196,245)
{
Width=684
Height=338
Caption="Пример использования Img_Point"
link(onCreate,2440807:doFor,[])
}
Add(MatrixRW,7908064,364,497)
{
link(onRead,12950424:doAdd,[])
link(Matrix,10480977:Matrix,[])
link(Value,7819081:Text,[])
link(X,11032514:Position,[(384,467)(496,467)])
link(Y,14198827:Position,[(391,489)(552,489)])
}
Add(Button,14680310,238,504)
{
Left=10
Top=120
Width=70
Caption="Запись"
link(onClick,7908064:doWrite,[])
}
Add(Button,6463866,238,462)
{
Left=10
Top=160
Width=70
Caption="Чтение"
link(onClick,7908064:doRead,[(289,468)(289,503)])
}
Add(Edit,7819081,371,406)
{
Left=10
Top=95
Width=70
Text="Hiasm"
}
Add(UpDown,11032514,490,329)
{
Left=10
Top=40
link(onPosition,9672766:doText,[])
}
Add(UpDown,14198827,546,371)
{
Left=95
Top=10
link(onPosition,12791473:doText,[])
}
Add(Label,9672766,532,329)
{
Left=35
Top=45
Width=35
Caption="0"
}
Add(Label,12791473,595,371)
{
Left=115
Top=15
Width=35
Caption="0"
}
Add(StringTableMT,10480977,350,259)
{
Left=90
Top=40
Width=435
Height=165
Columns=#1:0|1:1|1:2|1:3|1:4|
IconsCheck=[]
MiscIcons=[]
Icons=[]
Point(Matrix)
Point(doMT_FindText)
Point(onMT_FindText)
link(onMT_FindText,2780780:doAdd,[])
}
Add(For,2440807,287,259)
{
End=5
link(onEvent,10480977:doAdd,[])
}
Add(ListBox,12950424,413,497)
{
Left=530
Top=40
Width=135
Height=165
DataType=1
Point(String)
link(onClick,10480977:doMT_FindText,[(478,510)(478,444)(310,444)(310,300)])
}
Add(ListBox,2780780,644,266)
{
Left=530
Top=210
Width=135
}


------------ Дoбавленo в 15.38:
nesco писал(а):
Но размерность все равно озвучь
произвольно 1000*1000.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Разработчик
Ответов: 26173
Рейтинг: 2128
#18: 2012-04-04 15:56:14 ЛС | профиль | цитата
ser_davkin писал(а):
произвольно 1000*1000

Миллион элементов, да что бы их всех перебрать просто по циклу нужно несколько секунд, а ты хочешь мгновенный поиск
карма: 22

0
Ответов: 1536
Рейтинг: 176
#19: 2012-04-04 15:57:36 ЛС | профиль | цитата
Данные всей матрицы меняются динамично. Обращение к ячеке может достигать до 300 раз в секунду. Думаю обращение к базе с такой периодичностью будет неразумно.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Разработчик
Ответов: 26173
Рейтинг: 2128
#20: 2012-04-04 15:59:05 ЛС | профиль | цитата
ser_davkin писал(а):
все что я жму и выделяю в схеме должно происходить внутри процесса. Набросал на скорую руку

Еще раз -- чем тебя не устраивает элемент Matrix
------------ Дoбавленo в 15.59:
ser_davkin писал(а):
Обращение к ячеке может достигать до 300 раз в секунду

3,3 ms -- в поиске и замене не реально. Есди только на ассемблере писать с оноразовым выделением всей максимальной памяти
карма: 22

0
Ответов: 1536
Рейтинг: 176
#21: 2012-04-04 16:01:17 ЛС | профиль | цитата
Ладно, придется мне искать другие решения.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Разработчик
Ответов: 26173
Рейтинг: 2128
#22: 2012-04-04 16:02:16 ЛС | профиль | цитата
ser_davkin писал(а):
придется мне искать другие решения

На такую скорость --вряд ли найдешь при твоей размерности. Если только не использовать SSL инструкции на ассемблерных вставках или применение распараллеливания потоков при помощи Cuda процессоров видеокарты NVidia, используя самые быстрые алгоритмы поиска на ассемблере, оптимизированные опытным программистом. Возможно тогда ты и получишь 3,3 m на поиск и замену любой ячейки
карма: 22

0
Ответов: 1536
Рейтинг: 176
#23: 2012-04-04 16:06:26 ЛС | профиль | цитата
nesco писал(а):
Еще раз -- чем тебя не устраивает элемент Matrix
В нем можно изменять значения по индексу, а мне надо по значению ячейки. Нашел нужное значение, вызвал, обработал, заменил. И так по циклу.
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Разработчик
Ответов: 26173
Рейтинг: 2128
#24: 2012-04-04 16:09:37 ЛС | профиль | цитата
ser_davkin писал(а):
Нашел нужное значение, вызвал, обработал, заменил. И так по циклу.

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

0
Ответов: 1061
Рейтинг: 22
#25: 2012-04-04 16:15:33 ЛС | профиль | цитата
ser_davkin писал(а):
В нем можно изменять значения по индексу, а мне надо по значению ячейки.

Ну так обозначь индекс значением ячейки, через например компонент StrList!
карма: 0

0
Разработчик
Ответов: 26173
Рейтинг: 2128
#26: 2012-04-04 16:16:09 ЛС | профиль | цитата
ser_davkin, ты задал непростую задачу, не знаю, захочет ли кто за нее взяться за просто так. Я даже за ништяки не хочу с этим связываться
карма: 22

0
Ответов: 1536
Рейтинг: 176
#27: 2012-04-04 16:17:38 ЛС | профиль | цитата
Спасибо всем, вопрос снимаю.

карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Разработчик
Ответов: 26173
Рейтинг: 2128
#28: 2012-04-04 16:18:29 ЛС | профиль | цитата
RinniX, скорость, и еще раз скорость. Применение любых обычных компонентов в стандартном пакете чревато катастрофической потерей скорости на интерфейсные преобразования типов и проброс структур по линкам. Вы просто не представляете себе весь драматизм ситуации. Даже имея такой компонент, на интерфесные преобразования уйдет гораздо больше времени, чем на поиск и замену, что нивелирует все достижения быстродействия внутри компонента
карма: 22

0
Ответов: 1061
Рейтинг: 22
#29: 2012-04-04 16:18:44 ЛС | профиль | цитата
ser_davkin, нашёл решение?
карма: 0

0
Разработчик
Ответов: 26173
Рейтинг: 2128
#30: 2012-04-04 16:21:33 ЛС | профиль | цитата
RinniX писал(а):
нашёл решение?

Я, лично, сомневаюсь в этом
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)