?

Log in

No account? Create an account
dibr
 
[Most Recent Entries] [Calendar View] [Friends View]

Saturday, October 10th, 2009

Time Event
5:51p
lazy life

     Disclaimer: описанное ниже - не чисто техническое, но и литературное произведение. Поэтому технической строгости не требуйте - что-то "в реальности" может быть не реализовано или реализовано по другому. Но хочется верить, что всё описанное - как минимум реализуемо :-)

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

       (c) ibash

     Вообще, у компьютерщиков постоянно так. Чтобы программу с одной стороны не переписывать заново (и не сильно утруждать себя лишними мыслями при написании), а с другой стороны - чтобы оно работало "ещё быстрее", есть два стандартных способа: использовать "ленивое (отложенное) что-то" (самый известный пример - "отложенная запись" в дисковом кеше), или наоборот - "упреждающее что-то" (упреждающее чтение в нём же). В первом случае, когда нужно совершить какое-то действие, программе сообщают "да сделано уже, сделано" (а сделают потом, когда время будет, или когда реально понадобится), во втором - наоборот, делают какое-то действие заранее, на всякий случай - авось понадобится. Кстати, хороший пример второго подхода - упреждающее выполнение операций процессором. Процессор запускает на выполнение операции, для которых ещё не получены операнды, в надежде что когда операцию фактически начнут выполнять - операнд уже приедет - и это работает! Правда, операции иногда приходится выполнять по нескольку раз, пока не приедет операнд :-) Кстати, интересная статья, почитайте.
     Когда-то давно на тему "отложенного чего-то" я прикалывался, мол, если есть отложенная запись - давайте сделаем отложенное (не "упреждающее", а именно отложенное) чтение. Скажем программе, что то что она хотела прочитать - прочиталось, а прочитаем как-нибудь потом. Тогда я думал, что это прикол. Сейчас понял - это вполне реально: мы просто пометим (в менеджере виртуальной памяти) эти страницы памяти как "лежащие во-он там на диске", и как только приложение полезет с ними реально работать - произойдёт экспешн, управление будет передано куда-надо, и мы быстренько дочитаем их на ходу, прозрачно для приложения :-) При том что приложение не факт что сразу полезет работать со считанным, и тем более не факт что использует всё считанное - может и правда получиться ускорение. Правда, такое вроде бы нигде не реализовано, ограничились memory mapped files, что близко по смыслу, но не так смешно по названию :-)

     А теперь вот - ленивые вычисленияCollapse )
9:30p
LiIon
     Шиза какая-то.
     Недавно купленный Li-Ion аккумулятор (18650) был всунут в "велосигналку", и последние пару месяцев висел в "буферном" режиме на зарядке. Напряжение 4.19В, проверил, ток заряда - "около нуля" (встроенный в ЗУ стрелочный индикатор не отклоняется). Литий в полностью заряженном виде хранится, говорят, хуже чем в неполностью, но буферный режим вроде как держать должен без проблем.
     Позавчера внезапно обнаружил, что ЗУ устойчиво показывает 100 мА, ток со временем не меняется. Прифигел, понажимал на кнопочки на сигналке (всё работает как положено), убедился что ток втекает в сигналку, и что напряжение не превышено (не глюк зарядника). Проблема усугублялась тем, что для герметичности (да и прочности) корпус велосигналки был обильно пролит термоклеем, то есть вскрывать её ну очень не хотелось :-)
     Но пришлось. Быстро выяснилось, что виноват таки аккум. Аккум был заменен, сигналка заклеена взад, сейчас дозаряжается. А извлечённый оттуда аккум уже который час лежит на столе, и греется :-) Как-никак, почти полватта получается - немного, но чтобы быть "тёплым" достаточно.

     А я и задумался. Чего это он? Экземпляр такой попался, или литий всё-таки нельзя долго держать "в буферном режиме"? И я думал, утечка плавно растёт, а не "вчера не было, а сегодня - 100% в сутки". А так вот внезапно - так он возорваться должен был :-)

<< Previous Day 2009/10/10
[Calendar]
Next Day >>
My Website   About LiveJournal.com