Память процессора... Как обратиться? Заполнить? Освободить?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение Brainenjii » 07.06.2012 22:57:38

Совершенный код, ИМХО, книга которую надо прочитать _ПЕРЕД_ тем как начать учиться программировать, чтобы понимать, какую цель надо преследовать во время разработки. Что управление сложностью гораздо важнее "оптимизированности" (до разумных пределов, конечно) ^_^ И перечитать после года овладения OOP,TDD и подобных методик
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vitaly_l » 07.06.2012 23:21:13

Brainenjii писал(а):книга которую надо прочитать _ПЕРЕД_ тем как начать учиться программировать, чтобы понимать, какую цель надо преследовать во время разработки

Вы правы. :cry: Это правда, я сказанное Вами - там вижу, но мне от этого не легче т.к. помимо этого я вижу, ещё кучу вещей...
Brainenjii писал(а):перечитать после года овладения OOP,TDD

Вы правы... :cry: Там, в книге, много полезных вещей, которые стоит запомнить... Однако самый лучший способ запомнить и сэкономить время - краткий конспект, который удалит воду из жизни автора книги и оставит лишь чистый технический спирт.



.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vada » 08.06.2012 10:33:50

vitaly_l Мне так кажется что вы не с того начали учиться программированию.
Надобность в оптимизации кода встречается не так часто. Мне за 25 лет приходилось раза 3-4 оптимизировать быстродействие. Первый раз помню задача на XT считала почти сутки. Ускорить удалось до нескольких минут :) Потом другую задачу пришлось просто переписать с бейсика на паскаль. Потом оптимизировал SQL запрос (в конце месяца все дружно начинали формировать отчет и сервер просто задыхался от нагрузки)... Ну больше и вспомнить не чего.
Основная масса задач рассчитана на работу с пользователем через форму. Юзверь он как правило очень тормозной, и за быстродействием современных компов просто не поспевает. В последней моей работе кода было написано около 120000 строк из них сама расчетная часть (та что нуждается в оптимизации) всего 1500 строк. Ну сократил умножения в цикле, ну инлайнами что-то заменил... Наскреб 12 процентов. Остальные тонны кода остались как есть. Работает и фиг с ним. Даже метод половинного деления не стал менять на золотое сечение :) и так сойдет.

Если вы действительно хотите стать программистом, то есть такая замечательная книга - библия программиста. Называется "Искусство программирования" Д.Кнут трехтомник. Если вам удастся ее достать, читайте и наслаждайтесь. Там есть 99% всего что вам понадобится.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение zub » 08.06.2012 11:47:35

Код: Выделить всё
for i := 0 to 1000000

с такими цифрами удачи не видать, и от "процессорной" оптимизации толку не будет((
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vitaly_l » 08.06.2012 12:02:38

vada писал(а):Называется "Искусство программирования" Д.Кнут трехтомник

Ужасные программисты... Вам лишь бы заставить художников читать... В смысле - спасибо добрый vada...
первый том книги здесь: http://reslib.com/book/Iskusstvo_progra ... goritmi_#1
второй здесь: http://reslib.com/book/Iskusstvo_progra ... goritmi_#1
это третий: http://reslib.com/book/Iskusstvo_progra ... _tom_3_#90
vada писал(а):Работает и фиг с ним.

Если априори писать код с учётом того, что описано в данном топике, то сам код - потом можно даже не оптимизировать... Исключения составляют совершенствование мат-формул... Юзвери... Юзвери... у меня 1000000 картинок их нужно сравнить и найти копии... На сравнение каждой картинки уходят доли секунды, но всё вместе... получается 1000000 на 1000000... долго... :cry:
vada писал(а):метод половинного деления не стал менять на золотое сечение

Что за золотое сечение, как в соотношениях композиции или просто пополам??? :wink:



.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение Kemper » 08.06.2012 12:25:51

vitaly_l писал(а): На сравнение каждой картинки уходят доли секунды, но всё вместе... получается 1000000 на 1000000... долго...

А куда нам спешить? Меня лично очень напрягает тенденция, когда в задачах не критического уровня ставят огромные требования к оптимизациям и ресурсам. Эти требования там нефиг не нужны, пусть работает в фоне, пусть ест 20-30% процессора нам некуда спешить ибо это одноразовая задача.

vitaly_l писал(а):Исключения составляют совершенствование мат-формул...

Оптимизация для мат. формул простая - берешь математический пакет и упрощаешь там всю математику по самые не магу, а потом уже эту упрощенную вещь пишешь в программу.
Kemper
новенький
 
Сообщения: 61
Зарегистрирован: 18.05.2010 00:29:44

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vitaly_l » 08.06.2012 12:40:32

Kemper писал(а):берешь математический пакет и упрощаешь

Я математические пакеты - упрощать точно не буду... я не математик...
в функцию превратить ещё куда не шло, а УПРОЩАТЬ... хотя... всё - относительно... :cry:
Kemper писал(а):пусть ест 20-30% процессора

А что ему ещё остаётся??? Выше "крыши" - не прыгнешь...
А если задача многоразовая??? :arrow: :cry:



.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение alexey38 » 08.06.2012 12:47:41

Вот Вы немного раскрыли свою задачу по сравнение картинок.
Нужно эту задачу оптимизировать:
а) распараллеливание на несколько процессоров и даже на несколько компов.
б) вначале сравнивать упрощено, а если есть признаки совпадения, то сравнивать точно. Можно рассчитать некий индекс, или еще что-то (я не знаю в чем различие Ваших картинок).

Финальная оптимизация - уже дает копейки.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vitaly_l » 08.06.2012 13:06:54

alexey38 писал(а):распараллеливание на несколько процессоров и даже на несколько компов

Параллельные вычисления - это моя мечта... Буржуины проклятые мешают... Уже сто лет бы параллельные процессоры существовали... а то подсовывают свои бесталанные - допотопные тормозные интелы, которые ещё Аристотель придумал, а Бэббидж - усовершенствовал. Зачем им деньги???
alexey38 писал(а):сравнивать упрощено

Без этого вообще никак...
alexey38 писал(а):в чем различие Ваших картинок

Различие картинок??? Пусть будут буквы (символы)...
Растровые сравнивает. Подобные находит... даже если цвет поменять или офсет сделать...
Ускорить можно, только если в вектор перевести... (но я об этом пока только размышляю...)

Добавлено спустя 16 минут 55 секунд:
Re: Память процессора... Как обратиться? Заполнить? Освободить?
alexey38 писал(а):Можно рассчитать некий индекс

Индекс? Это интересный момент... здесь можно поподробнее????!



.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение Brainenjii » 08.06.2012 13:36:40

http://habrahabr.ru/post/120562/
http://habrahabr.ru/post/120577/
заметьте, если бы изначально задавался вопрос - как быстро сравнить кучу изображений - рассуждения пошли бы в совсем другом ключе.
Самый лучший способ оптимизации - это смена алгоритма (кстати, из того же совершенного кода ^_^)
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vitaly_l » 08.06.2012 13:47:40

Brainenjii писал(а):рассуждения пошли бы в совсем другом ключе

Всё идёт как надо... Рассуждения идут в нужном ключе, ребёнок (в смысле я) - получил кучу необходимых знаний и умений...
Brainenjii писал(а):смена алгоритма

Я им(алгоритмом) не дорожу... Я так и думал: индекс - это хэш... Как работает хэш, я нутром понял, но алгоритмом нет... :wink:
Хэш изображений??? Этого я не могу понять даже нутром... :!: Спасибо. :arrow: Ушёл изучать... :cry:



.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vada » 08.06.2012 14:01:20

первый том книги здесь:
второй здесь:
это третий:

Это то.

Индекс? Это интересный момент... здесь можно поподробнее????!

Помните старый анекдот про нового учителя географии в абсолютно отвязном классе?
Ну... про натягивание презика на глобус... Где еще самый заинтересованный ученик спросил что такое глобус...

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

Да чего я! Читайте Кнута. Там все есть.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vitaly_l » 08.06.2012 14:31:09

vada писал(а):Читайте Кнута. Там все есть.

А потрещать??? :| Без: потрещать - Кнута читать скучно...
vada писал(а):"целевая функция" или "индекс"

Значит это был не хэшь... а целевая функция...

Кстати в указанном, добрым Brainenjii, примере: вычисление хэш - делает лишнюю работу, т.к. разделяя на два цвета, он всё равно оставил матрицу 64х64 и просчитывает её как и без хэша, а вот точность сравнения, у него - уменьшилась... Однако вот Расстояние Хэмминга... Его я и пытаюсь сейчас перевести на язык художников и объяснить моим ленивым нейронам, как этим Расстоянием Хэмминга пользоваться... :wink:



.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vada » 08.06.2012 14:38:52

Хэш это тоже целевая ф-я.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Память процессора... Как обратиться? Заполнить? Освободи

Сообщение vitaly_l » 08.06.2012 14:44:35

vada писал(а):Хэш это тоже целевая ф-я

Ну вот... опять всё поломалось... я полагал, что хэш - это число...
Число - это индекс...
Индекс - это хэш.
Хэш - это функция...
Целевая функция - это число...

Перегрузка.

Ресет.

О чём Мы говорили?



.
http://wiki.lazarus.freepascal.org/Comp ... xamples/ru
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 235

Рейтинг@Mail.ru