Ru-Board.club
← Вернуться в раздел «Программы»

» SatMap (2)

Автор: nemo3001
Дата сообщения: 16.06.2010 13:55
relictus

Цитата:
Ну попробуй, так ты хотел с нумерацией экземпляров проги?

Попробовал. Тебе удалось заменить магическое число 10 на другое магическое число 2 (иногда на 3, 4 и тд)!

Подробный протокол тестирования: (текст слишком длинный, вывод - в п.0, всех прошу сразу туда)

1. запускаем последовательно 3 экземпляра программы, нумеруются нормально, закрываем 2 экземпляр, остаются работать 1 и 3. Запускаем 2 снова - как и хотели получаем 2 порядковый номер, а не 4, как было в версии 1.4.0.
2. открыты 6 экземпляров, закрываем 2 и 5. Запускаем последовательно еще 3 экземпляра, они получают номера 2, 5 и 7. Все нормально.
3. повторяем эти действия с любым количеством одновременно запущенных экземпляров до 9 включительно, сбоев нет, нумеруются верно.
4. запускаем с 1 по 9 экземпляр программы, потом запускаем 10-й экземпляр, он получает номер 10, зато запуская потом сколько угодно экземпляров, получаем в заголовке каждого - номер 2, а не 11, 12 и тд, как ожидалось.
5. дальше - еще веселее, если кому читать надоело уже переходим к выводу в п.0.

Ну а кто еще с нами -
6. запускаем с 1 по 9 экземпляр программы, потом запускаем 10-й экземпляр, закрываем 3 и 5 - остались в памяти 1,2,4,6,7,8,9,10 экземпляры. Запускаем еще 2 экземпляра и получаем в заголовке каждого - номер 2, а не 3 и 5, как ожидалось.
7. запускаем 10 экземпляров, закрываем/открываем 5 экземпляр, он получает номер 2. Закрываем номер 10, после чего, если закрывать/открывать, например, номера 6 и 7 они уже будет получать стабильно номер 2, иногда так же стабильно 3 или 5, в общем, что попало. . И вообще - пока в памяти есть экземпляр с номером 10, хоть все остальные закрой, при повторном открытии они пронумеруются так - 1,2,2,2 и тд. Если номер 10 закрыт, но есть в памяти варианты с неверными цифрами 2, то нумерация новых будет - 1,3,3,3 и тд. Уфф... все. Тест окончен.

0. В общем, сбой в алгоритме начинается как только в памяти оказывается 10-й экземпляр программы. Правильная нумерация восстанавливается, если а) уменьшить количество одновременно запущенных экземпляров программы меньше 10-ти и обязательно б) закрыть экземпляры с номером 10 и со всеми неверными номерами.

Рекомендация для версии 1.4.1 - не превышать количество одновременно запущенных программ выше 9, тогда нумерация будет верная.

Обычно чужой алгоритм прикрыт внутри программы как черный ящик, видны только входы и выходы, но все-таки удается представить варианты его реализации. Здесь же придется все-таки в текст программы глазами посмотреть, слишком уж весело все пляшет. Прямо - задачка для проверки IQ программиста получилась
Автор: relictus
Дата сообщения: 16.06.2010 14:21
nemo3001
Все бы так баг-репорты писали!

Цитата:
Прямо - задачка для проверки IQ программиста получилась

Разгадаешь? Подсказку дать?

А что насчет моего пред.поста? про вики...
Автор: nemo3001
Дата сообщения: 16.06.2010 15:01
relictus

Цитата:
Подсказку дать?

Да ладно, все равно этот тест на IQ я уже провалил . Теперь уж ты сам в программе посмотри, откуда все фокусы берутся.


Цитата:
А что насчет моего пред.поста? про вики...

Подробно на эту тему - наверное лучше по Skype созвониться, чего тут место загромождать.
А если коротко пояснить, то чтобы хоть что-то написать, мало знать буквы, надо знать предмет описания. А я как уже сказал раньше, программу SatMap знаю пока мало.
Пока я могу, например, написать про режим GPS только так:
"Если у вас не подключено устройство GPS, то выбор пункта меню "GPS" - "Подключиться" не приводит ни к каким последствиям, а вот нажатие на кнопку панели инструментов с надписью "GPS" откроет черный экран со значками, закрыть который мне пока удается только через комбинацию клавиш Alt+F4. Повторный же запуск программы так и будет выводить Вам черный экран, пустой, без значков, пока в папке программы не удалишь файл satmap.xml".
Ну, как? Кажется это не очень информативно для полноценного хелпа
Автор: relictus
Дата сообщения: 16.06.2010 15:19
nemo3001

Цитата:
Теперь уж ты сам в программе посмотри, откуда все фокусы берутся.

Да мне и смотреть не надо, я знаю откуда (сортировка) Завтра выложу исправленный билд. Текущий я просто не тестировал после десяти экземпляров...

Цитата:
Подробно на эту тему - наверное лучше по Skype созвониться, чего тут место загромождать.

Скайпа нет, могу дать аську в личку. Но завтра уже.


Цитата:
черный экран со значками, закрыть который мне пока удается только через комбинацию клавиш Alt+F4. Повторный же запуск программы так и будет выводить Вам черный экран, пустой, без значков, пока в папке программы не удалишь файл satmap.xml".

Ой как всё запущено!
Выход из режима навигации - псевдо-кнопка "синий квадрат с символом >"
Переключение режима фуллскрин - CTRL-F или средняя кнопка мыши (колесо).

Если будешь писать хэлп/вики, я тебе расскажу все секреты проги

Добавлено:

Цитата:
Завтра выложу исправленный билд

Успел сегодня
Вот, попробуй: satmap_v2.4.1.1_multi_exe.7z (1.4 МБ)
Автор: nemo3001
Дата сообщения: 16.06.2010 17:26
relictus

Цитата:
Успел сегодня

Ну, что ж, нумерация экземпляров программы в мультиверсии 1.4.1.1 теперь работает кажется нормально. Спасибо.
Автор: relictus
Дата сообщения: 16.06.2010 17:33
nemo3001
Ошибаешься с версией... 2 > 1
Автор: zporuchik
Дата сообщения: 17.06.2010 07:36
relictus
Утилитка (исходники)

З.Ы.: для уменьшения объема из папки NamesFileClipper\bin\Debug удален файл rs.txt
Автор: relictus
Дата сообщения: 17.06.2010 08:05
zporuchik
Забрал, спасибо.
Автор: rex
Дата сообщения: 17.06.2010 10:59
relictus

Попробовал нажать "Поиск GPS", GPS подключен не был
Появилась синяя вертушка и процесс пошел.
А вот остановить этот поиск можно только убив весь процесс.
Нельзя ли эту остановку делать менее радикальными средствами?

Автор: relictus
Дата сообщения: 17.06.2010 11:07
rex

Цитата:
А вот остановить этот поиск можно только убив весь процесс.

Всё торопишься?
А подождать окончания (пара минут) - никак?
Автор: rex
Дата сообщения: 17.06.2010 11:23
relictus
А зачем ждать? Кстати ждал минуты три. Для нетбука в походе это очень много.
Автор: relictus
Дата сообщения: 17.06.2010 11:53
rex

Цитата:
А зачем ждать?

А затем, что проверяются все доступные порты с разным бодрейтом! Процесс не быстрый, а вариантов много.

Цитата:
Для нетбука в походе это очень много.

А зачем запускать поиск GPS без подключенного приемника?
Автор: zporuchik
Дата сообщения: 17.06.2010 12:25
relictus

Цитата:
А зачем запускать поиск GPS без подключенного приемника?

а зачем нажимать красную кнопку, на которой написано "НЕ НАЖИМАТЬ!!!" ?
Автор: DCT
Дата сообщения: 17.06.2010 14:44
Возвращаясь к идее с номерами мультиверсии.
Фича, безусловно, полезная, но ИМХО можно и практически нужно это сделать по другому: допустим, SatMap запускается из каталога "SatMap какоетоназвание" (или просто "какоетоназвание"), так вот в заголовок удобнее выводить не номер, а "какоетоназвание" из пути запуска (причем такая опция была бы нелишней также и для не-мульти версии).
таким образом, когда "какоетоназвание"==номер, получаем требуемый результат, легко и на корню ликвидировав проблему несовпадения номеров заголовка и каталога

Касательно хелпа. ИМХО люди запросившие реализованную фичу должны отисываться, для чего полезна данная фича с примерами (т.к. они это лучше всего представляют) - так глядишь, и ФАК совместными усилиями получится.
Автор: nemo3001
Дата сообщения: 17.06.2010 18:00
relictus
Знаешь, чем больше использую SatMap для просмотра Земли, тем больше не хватает мне в нем окна мини-карты. Знаешь, такое окно, внешне похожее на те, что есть в Ozi или в играх - в Героях или в Варкрафте (только поудобнее )
1) такое небольшое плавающее окно, которое можно перемещать по экрану независимо от главного окна, размер которого можно изменять по своему выбору,
2) уровень изображения в котором можно делать меньше чем в главном окне, по своему выбору, и устанавливать какой удобнее слой изображения
3) на котором прямоугольником, наложенном на карту, виден участок, покрываемый главным окном
4) щелчок мыши на мини-карте быстро переместит изображение в главном окне на другой участок (а может и перетаскивание мышью прямоугольника по мини-карте будет перемещать изображение в главном окне - правда так и представляешь себе скрежет и напряг кэша на жестком диске, чтобы перерисовать главное окно в такт движению мыши, даже жалко его , ну да кэш в оперативке должен наверное облегчить жизнь)
5) в этом окне мини-карты - своя небольшая панель инструментов - как минимум выбор уровня и слоя для его изображения, и статусная строка с координатами курсора на ней (хотя, может быть уровень/слой устанавливать где-нибудь в настройках программы в разделе "мини-карта", если на самой мини-карте это будет уже совсем громоздко выглядеть),
6) разумеется возможность включать/отключать мини-карту с кнопки на панели инструментов главного окна или в меню/по горячей клавише

А для чего использовать все это удобство можно - вроде очевидно, все мы в игры играли.
- перемещаешь изображение города на 19 уровне - а в мини-карте делаешь 16-17 уровень, как тебе удобнее и видишь, какой район города перед тобой, да и между районами быстро перейти можно.
- просматриваешь местность на большом уровне в слое спутник или гибрид, а на мини-карте ставишь 16 уровень, слой ландшафт и видишь, как реально там местность меняется (а то и генштаб смотришь в этом же слое )
- выводишь на мини-карте весь маршрут путешествия на малом уровне и в главном окне на большом уровне увеличения можно быстро просматривать разные его участки, не расставляя заранее точки, а просто щелкая мышью по мини-карте
- ну и тд...

Ну и, честно говоря, небольшого перемещаемого окошка с Лупой иногда тоже не хватает при просмотре сложных мест с мелкими деталями - например от 1x до 8x с плавным изменением масштаба, предположим с шагом 0,1 - 0,2x. Использую в этих случаях системную в Windows XP "Экранную лупу", но она грубовата, шаг 1х для карты слишком резок.


Добавлено:
DCT

Цитата:
в заголовок удобнее выводить не номер, а "какоетоназвание" из пути запуска

А можно и то, и другое вывести - номер экземпляра в начале заголовка окна вроде места много не занял, а после названия программы и [cache n/m] вывести в заголовок окончание имени каталога запуска программы. "Окончание имени" - потому что длинные пути могут туда и не войти, а начало имени каталога менее информативно, важна-то именно последняя часть имени каталога.

В заголовке программы будет тогда что-то вроде: "=10=SatMap Navigation 2.4.1.1 multi [cache /1] "C:\...am files\SatMap_01".

При этом длину символьной строки "C:\...am files\SatMap_01" можно подстраивать при изменении размера главного окна программы, войдет путь целиком - хорошо, а нет - так информативная часть его будет видна - рабочий диск (3 символа) + "..." + окончание имени каталога запуска.
В общем, тогда и номер экземпляра будет виден, и имя каталога запуска программы тоже.

Кстати,
relictus
а может быть этот номер экземпляра программы, который ты вывел в заголовок программы, теперь можно будет продублировать и в заголовке загрузки перед словом "Выделение", да и в окне капчи тоже - в начале заголовка перед датой/временем, а то не видно, чья это капча в очередной раз жить мешает

И еще. В трее, где написано оставшееся время закачки для текущего экземпляра программы, в случае появления капчи может быть вместо "[время] - SatMap" выводить, например, "[!] - SatMap", или "[Внимание!] - SatMap". А то некоторые капчи все-таки "прячутся" за окнами, а по состоянию трея не видно, какие окна продолжают закачку, а какие ждут ответа пользователя.

А насчет монопольной, не мульти-версии SatMap, не знаю уж как ты сопровождаешь две версии - разные проекты, или просто в едином проекте условную компиляцию делаешь, но просто для единообразия и простоты, в заголовках окон программы номер экземпляра монопольной версии SatMap мог бы выглядеть как =0=.
В общем, номер 0 - для монопольной версии программы, номера, начиная с 1 и выше - для мультиверсии.
Автор: rex
Дата сообщения: 17.06.2010 21:33
relictus

Цитата:
А зачем запускать поиск GPS без подключенного приемника?

А зачем делают автоматическое отключение в случае перегрева? Помня о проблемах с прошлыми версиями решил проверить сделал ли ты нормальное принудительное завершение процесса. Не сделал. Ладно. Не будем любителей пофлеймить поощрять, а тебя от KML отвлекать , хотя ты вроде архиважной для лета темой нумерации окошек увлекся, так что тебе не до KML наверное . Кстати я эту проблему давно для себя решил при помощи нумерации папок с программой и соответстующей нумерацией кэшей, которые у меня все в одной папке для удобства экспорта. Папка SatMap_9 имеет кэш cache_09 и соответствующее имя кэша в настройках (просто 9). Один раз настроить программу в одной папке, сделать 10 копий и затем в каждой копии просто изменить имя файла кэша и самого кэша. И не надо заморачиваться с изменением порядка открытых экземпляров программы.

Теперь о более простом. В SatMap есть довольно удобная функция центровки карты по курсору щелчком мыши. Но у этой фичи есть одна небольшая, но раздражающая особенность. Карта центруется, а значек курсора остается в том же месте экрана где был, поэтому если сделать не одинарный клик, а двойной, что пользователь Windows часто делает автоматически, карта "улетает". Если не сильно сложно, сделай так, чтобы при щелчке курсор помещался в центр карты, на красном крестике. Тогда двойной клик будет нейтрализован.

О айконах в тулбаре. То что для раскрытия меню теперь не надо попадать по маленькой стрелочке очень удобно, особенно когда нетбук на весу и мыши нет, так что спасибо - очень оператвивно получилось. Но теперь получается дублирование кнопок. Оно не мешает, но как-нибудь можно стрелочки и выкинуть, дабы не умножать количества сущностей и кнопок в тулбаре без необходимости.
Автор: relictus
Дата сообщения: 18.06.2010 07:26
nemo3001

Цитата:
не хватает мне в нем окна мини-карты

Если честно, то я не вижу в нем особой необходимости, поскольку

Цитата:
перемещаешь изображение города на 19 уровне - а в мини-карте делаешь 16-17 уровень, как тебе удобнее и видишь, какой район города перед тобой, да и между районами быстро перейти можно.

легко достигается/эмулируется простым скроллом колеса мыши или "+/-". И не надо делать никаких лишних движений (елозить квадратиком по мини-карте, попадая в нужный район).

Лупу реализовывал в каком-то из билдов, возможно даже внутреннем, но потом отказался от нее - что-то было некомфортно с ней. Возможно, теперь снова стоит вернуться к этой теме


Цитата:
А можно и то, и другое вывести - номер экземпляра в начале заголовка окна вроде места много не занял, а после названия программы и [cache n/m] вывести в заголовок окончание имени каталога запуска программы. "Окончание имени" - потому что длинные пути могут туда и не войти, а начало имени каталога менее информативно, важна-то именно последняя часть имени каталога.

Можно и так. DCT - что скажешь?


Цитата:
а может быть этот номер экземпляра программы, который ты вывел в заголовок программы, теперь можно будет продублировать и в заголовке загрузки перед словом "Выделение", да и в окне капчи тоже - в начале заголовка перед датой/временем, а то не видно, чья это капча в очередной раз жить мешает

Рассмотрю.


Цитата:
И еще. В трее, где написано оставшееся время закачки для текущего экземпляра программы, в случае появления капчи может быть вместо "[время] - SatMap" выводить, например, "[!] - SatMap", или "[Внимание!] - SatMap". А то некоторые капчи все-таки "прячутся" за окнами, а по состоянию трея не видно, какие окна продолжают закачку, а какие ждут ответа пользователя.

Хорошая мысля


Цитата:
А насчет монопольной, не мульти-версии SatMap, не знаю уж как ты сопровождаешь две версии - разные проекты, или просто в едином проекте условную компиляцию делаешь

Второе. =0= не буду делать.

rex

Цитата:
Если не сильно сложно, сделай так, чтобы при щелчке курсор помещался в центр карты, на красном крестике.

Попробую.

Цитата:
но как-нибудь можно стрелочки и выкинуть

Врядли. Потеряется визуальное ощущение, что за кнопками еще есть попап...

Автор: rex
Дата сообщения: 18.06.2010 08:58
relictus

Цитата:
Лупу реализовывал в каком-то из билдов, возможно даже внутреннем, но потом отказался от нее - что-то было некомфортно с ней. Возможно, теперь снова стоит вернуться к этой теме

Очень нужная вещь особенно на маленьких экранах с высоким разрешением. Причем ничего сверхестественного в ней ваять не надо. Зум и размер окошка.


Цитата:
Врядли. Потеряется визуальное ощущение, что за кнопками еще есть попап...

Так кто мешает в нижнем правом углу кнопки стрелочку приделать, как у ярлыка Windows?
Автор: relictus
Дата сообщения: 18.06.2010 09:02
rex
Ок, лупу запишу в ToDo.
А насчет

Цитата:
кто мешает в нижнем правом углу кнопки стрелочку приделать, как у ярлыка Windows?

Windows и мешает, т.к. это стандартная toolbutton, а не ярлык (гы!), на ней не шибко порисуешь-то...
Автор: zporuchik
Дата сообщения: 18.06.2010 09:42
relictus

Цитата:
на ней не шибко порисуешь-то...

а так: ↓ (U+2193: Downwards Arrow) или ▼ (U+25BC: Black Down-Pointing Triangle)?
Автор: rex
Дата сообщения: 18.06.2010 10:04
relictus

Цитата:
Ок, лупу запишу в ToDo


Цитата:
Лупу реализовывал в каком-то из билдов, возможно даже внутреннем, но потом отказался от нее - что-то было некомфортно с ней. Возможно, теперь снова стоит вернуться к этой теме

Чего ее в ToDo если она уже есть? Прикрути, что есть, а мы посмотрим. Когда надо прочесть мелкое название улицы, на 10-ти дюймовом экране, комфортом можно временно пожертвовать.
Автор: relictus
Дата сообщения: 18.06.2010 15:27
rex

Цитата:
Чего ее в ToDo если она уже есть?

Была, исходники той версии не сохранились

Автор: rex
Дата сообщения: 18.06.2010 15:31
relictus
http://www.batterybay.net/ProductDetails.asp?ProductCode=iBlueCS-XEW01SL
Это конечно другое, но реализовано просто и удобно.
Наведи курсор на батарейку - хорошо что увеличенный рисунок в стороне от основного.
Автор: nemo3001
Дата сообщения: 19.06.2010 16:16
relictus
parasss,egor23
Как и многие тут на форуме, я тоже обратил внимание на достаточно сильный рост нагрузки на жесткий диск при одновременной закачке тайлов несколькими копиями SatMap.
Решил протестировать возможность снижения количества дисковых операций, используя настройки SatMap, посмотрел предварительно, что тут на форуме писали об этом.

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

Путь тайла из интернета в кэш SatMap при включенном режиме транзакций упрощенно выглядит так: закачка тайла -> журнал -> кэш SatMap. Количество тайлов, записываемых в журнал до их передачи в кэш SatMap, настраивается в разделе "Кэш" -"Завершить транзакцию после...". Сейчас там по умолчанию стоит "после 1 вставки в БД". То есть сейчас каждый тайл сначала из интернета скачивается в журнал, потом он передается в кэш SatMap и журнал очищается (как очищается - см. дальше).
Кроме того, стоит иметь ввиду, что передача тайла из журнала в кэш - это не только создание записи в кэше, физическое копирование туда полей записи, включая тайл, но и перестройка индекса в БД SQlite. 10 вставок отдельных записей видимо заставляет БД 10 раз перестраивать индекс, 1 вставка сразу 10-ти записей перестраивает индекс 1 раз.

Вести этот журнал можно 4 разными способами (DELETE,TRUNCATE,PERSIST и MEMORY), или вообще отключить его (OFF) и тогда закачанный тайл сразу будет записываться в кэш SatMap.
Причем из документации SQlite, которую тут цитировал relictus, следует, что в вариантах MEMORY и OFF при любых сбоях в момент записи тайлов в кэш SatMap (электропитание и пр.), "the database file will very likely go corrupt", то есть база данных с большой вероятностью будет безнадежно испорчена, накопленный кэш SatMap пойдет "фтопку".
Надежными способами ведения журнала таким образом остаются:
1) DELETE - создание файла журнала, заполнение его, копирование записей в БД, удаление файла журнала с диска. Это способ сейчас используется в SatMap по умолчанию, если ничего в программе не настраивать.
2) TRUNCATE - однократное создание файла журнала, а затем - циклично: заполнение его, копирование записей в БД, изменение размера файла до 0 байт (без удаления файла с диска)
3) PERSIST - однократное создание файла журнала, а затем - циклично: заполнение его, копирование записей в БД, перезапись заголовка журнала нулями (размер файла при этом не изменяется)

Таким образом, для теста снижения количества дисковых операций сами собой напросились:
1)увеличение количества вставок тайлов в журнал до передачи их в кэш SatMap ("Настройки" - "Кэш"), и
2) использование различных безопасных режимов журнала транзакций, используя настройку в файле satmap.xml в секции <prog> параметра <JM>режим</JM> (то есть, записать туда <JM>DELETE</JM>, или <JM>TRUNCATE</JM> и тд).

Для этого теста:
1) запускал на закачку тайлов SatMap
2) использовал Filemon для протоколирования дисковых операций
3) сохранял результат Filemon в текстовый файл
4) открывал полученный файл в Excel, подсчитывал промежуточные итоги количества записей по столбцу "время" (в меню Excel "Данные"-"Итоги"), потом либо суммировал эти количества за разные промежутки, либо подсчитывал среднее.

Результаты теста в таблице:
===========================================================
Количество DELETE TRUNCATE PERSIST
дисковых ----------- ----------- -------------
операций Вставок в БД: 1 20 50 1 20 50 1 20 50 100
===========================================================
за 1 цикл записи (средн) - 105 155 - 120 168 - 130 150 220
----------------------------------------------------------------------------
за 1 сек (средн/ 82 45 33 139 49 45 143 40 56 159
макс) 159 105 126 196 116 154 194 123 141 183
----------------------------------------------------------------------------
за 30 сек 2237 221 191 4102 355 340 4048 398 295 210
----------------------------------------------------------------------------
за 60 сек 4475 435 353 >8000 615 450 >8000 - - 320
----------------------------------------------------------------------------
за 5 мин - 1328 - - 2368 - - 2467 - -
(в % к DELETE) 1,78 1,85
============================================================

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

1. Обязательно надо увеличивать количество вставок в БД до завершения транзакции - до 20-ти или выше, в зависимости в от скорости закачки и своего оптимизма. Рекомендую цифру 20, при которой риски остаются малыми, а количество обращений к диску сокращается в 10 (!) раз (например, с 2237 раз за 30 сек - до 221 раза). Если увеличивать количество выше 20-ти, начинают расти пиковые (максимальные) нагрузки на диск в 1 сек, что и понятно - сначала накопили в журнале много тайлов, а потом надо их сразу записать в кэш, вот тут-то диск поскрипит немного и затихнет до следующей порции.
relictus, не мог бы ты сделать в программе по умолчанию именно 20 вставок в БД до завершения транзакции вместо 1, как сейчас? Чтобы программа запускалась сразу с этой настройкой и пореже бы заигрывала с жестким диском .

2. При режиме ведения журнала DELETE нагрузка на жесткий диск по количеству обращений к нему неожиданно оказалась ниже, чем в режимах TRUNCATE и PERSIST. Казалось бы каждый раз удалять/создавать файл журнала труднее, чем просто обнулять его длину или записывать нулики в его начало. Может быть это, кстати, так и есть, я-то тестировал КОЛИЧЕСТВО, а не ПРОДОЛЖИТЕЛЬНОСТЬ дисковых операций. Но по этому тесту (в последней строке таблицы) - количество обращений к диску в режимах TRUNCATE и PERSIST почти в 2 раза больше, чем в режиме по умолчанию DELETE. Поэтому все-таки рекомендую ничего не изменять в файле satmap.xml в секции <prog>, параметр <JM>режим</JM>. Может быть конечно кто-то потестирует этот момент более тщательно и даст другие выводы, но пока это так.
Автор: relictus
Дата сообщения: 19.06.2010 16:44
nemo3001

Была б на этом форуме система рейтинга, я б тебе +100 поставил за такой подробный и нужный тест! Молодца - всё доступно (и правильно!) изложил даже для людей, далеких от программирования и баз данных!
Вот только еще бы графу с режимом MEMORY

Цитата:
не мог бы ты сделать в программе по умолчанию именно 20 вставок в БД до завершения транзакции вместо 1, как сейчас?

Не вопрос, сделаю!

Добавлено:
И кстати, на форуме есть тэг для создания таблиц...
Автор: nemo3001
Дата сообщения: 19.06.2010 18:13
relictus

Цитата:
еще бы графу с режимом MEMORY

Примерно вот так - количество обращений к диску в режиме MEMORY за 5 мин (из режима DELETE убрал строки обращения к журналу (он же в ОЗУ) и пропорционально уменьшил количество Получилось чуть больше половины (57 проц.) от количества в режиме DELETE. Тоже хорошо, еще бы и надежно было...

MEMORY
20
-----------------------
за 5 мин 761
-----------------------

А вообще, можешь и сам поиграть с исходным файлом Excel, он вроде черновика, для себя делал...
Test_20100619.rar 502.05KB
http://slil.ru/29361052

А первой-то мыслью перед этим тестом было спросить у тебя - нельзя ли разместить файл журнала просто на любом другом диске (в настройках - "Кэш" ввести необязательный путь для хранения журнала).
Даже размещение журнала на другом физическом диске ускорило бы дисковые операции, а уж на RAM диске... Такая настройка кстати есть в MS SQL Server, где рекомендуют базу данных и файл лога (журнала) размещать на разных физических дисках, просто указываешь пути для этих файлов.
Но возможно в SQLite и нет такой возможности. Да и режим MEMORY, практически реализующий эту идею, меня смутил своей документированной ненадежностью...
Автор: relictus
Дата сообщения: 19.06.2010 18:55
nemo3001

Цитата:
нельзя ли разместить файл журнала просто на любом другом диске

К сожалению, нет:

Цитата:
The rollback journal is always located in the same directory as the database file...



Цитата:
Да и режим MEMORY, практически реализующий эту идею, меня смутил своей документированной ненадежностью...

Ну да, тут как повезет
Недавно качал кэш одной области, как раз в MEMORY режиме, ничего за пару дней с перерывами 3 гига накачалось нормальненько так Хотя и электричество обрубали на полчаса (спас бесперебойник), и некоторые проги крашились...
Автор: egor23
Дата сообщения: 19.06.2010 21:14
nemo3001

Цитата:
Как и многие тут на форуме, я тоже обратил внимание на достаточно сильный рост нагрузки на жесткий диск при одновременной закачке тайлов несколькими копиями SatMap.
....
Причем из документации SQlite, которую тут цитировал relictus, следует, что в вариантах MEMORY и OFF при любых сбоях в момент записи тайлов в кэш SatMap (электропитание и пр.), "the database file will very likely go corrupt", то есть база данных с большой вероятностью будет безнадежно испорчена, накопленный кэш SatMap пойдет "фтопку".

1. использую 1000 вставок в БД \ и MEMORY (<JM>MEMORY</JM>)
(нагрузка на диск минимальна)
2. выкачку рекомендуется делать в новый кэш, т.к. после выкачки соравно придётся делать дефрагментацию кэша.
Автор: rex
Дата сообщения: 19.06.2010 21:47
relictus

Цитата:
relictus, не мог бы ты сделать в программе по умолчанию именно 20 вставок в БД до завершения транзакции вместо 1, как сейчас? Чтобы программа запускалась сразу с этой настройкой и пореже бы заигрывала с жестким диском .


relictus

Цитата:
Не вопрос, сделаю!


А ты не спеши
Я тут экспериментировал при записи на древний USB диск от старого ноута еще в 4200 оборотов!!! на 4 8 16 32 64 и 128 вставках при 9-ти запущенных экземплярах, так лучше всего работает в режиме 128 вставок! До 256 просто руки пока не дошли. При этом я накрывал диск картонной крышкой от коробки, чтобы ночью даже тихих щелчков при записи не было слышно, так он к утру все равно был еле теплый, а сейчас отнюдь не зима! И 3-4 гигабайта за ночь скачивал, если я хотя бы раз за ночь не ленился каптчи вбивать, раньше скорость была намного ниже! Правда все пишется в новые кэши в режиме заменять без проверки.

Так что по умолчанию надо ставить минимум 128 вставок. Вон у egor23 вообще 1000 и все нормально работает.


Цитата:
1. использую 1000 вставок в БД \ и MEMORY (<JM>MEMORY</JM>)
(нагрузка на диск минимальна)
2. выкачку рекомендуется делать в новый кэш, т.к. после выкачки соравно придётся делать дефрагментацию кэша.


Автор: nemo3001
Дата сообщения: 20.06.2010 06:44
relictus
egor23
rex
По поводу выбора конкретного количества вставок в БД до завершения транзакции в настройках программы по умолчанию, да и при эксплуатации программы, то ситуация здесь не очень сложная, просто важно, чтобы пользователь понимал, на что повлияет установка той или другой цифры.

Вроде бы теперь кажется очевидным, что увеличить больше 1 количество вставок надо обязательно

Цитата:
до 20-ти или выше, в зависимости в от скорости закачки и своего оптимизма

    Чем больше сделать число вставок в БД,
    1) тем меньше будет суммарное количество обращений программы к жесткому диску, разумеется до определенного предела, минимально необходимого, что бы все-таки переписать журнал в кэш
    2) тем больше будут возрастать пиковые посекундные нагрузки на диск в момент сброса содержимого журнала в кэш SatMap, конечно тоже до определенного предела, связанного с производительностью диска
    3) тем больше будет величина риска непроизводительной затраты времени и трафика на закачку в случае аварийного сбоя в работе программы (эта величина также зависит от скорости закачки и количества одновременных потоков закачки).
    
    Например, при 20 вставках в БД до завершения транзакции, нагрузка на диск снижается в 10 раз, мы видим невысокие пиковые посекундные нагрузки на диск (порядка 40-50 обращений к диску в сек). Ну и скорость загрузки - у меня, например она обычно около 1-2 тайла в секунду, изменяется в зависимости от разных причин, возьмем для расчета пока эту величину.
    Итак, при условно говоря 8 потоках закачки в случае зависания/перезагрузки компьютера, сбое электропитания, мы потеряем в среднем по 10 тайлов (20/2) в каждом из 8 журналов, не записанных в кэш, то есть 10*8 * 1,5 сек - всего около полтора-двух минут работы компьютера (и нашего драгоценного времени ). О трафике особо не говорю, у многих вероятно все-таки безлимит, но остальные потеряют и 80*9 - примерно 720 кб трафика.
    Тот же расчет при 128 вставках в БД до завершения транзакции дает утрату в случае сбоя 64*8*1,5 - около 13 минут и около 4,5 мб трафика, а при 1000 вставках - утрату 4 тыс тайлов (500*8), более полутора часов времени закачки и 36 мб трафика. При количестве одновременных потоков больше 8, эти утраты увеличатся пропорционально, при меньшем - снизятся.

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

Ну, а если пользователь не заморачивается с этой настройкой, запустил программу и пользуется, или если ноутбука или бесперебойника нет, или оставить надо комп надолго, в общем во всех остальных случаях слишком сильно увеличивать количество вставок в БД до завершения транзакции вроде бы все-таки не нужно. Поэтому число вставок порядка 20-ти и показалось мне и полезным, и относительно безопасным.
Важно только не оставлять его равным 1, чтобы не перегружать бесцельно и без того многострадальные жесткие диски.    

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: BitTorrent/BitComet/Azureus/BitTornado и др. / сеть и клиент


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.