Как стать автором
Обновить
1
0
Юрий Егоров @Newton

Пользователь

Отправить сообщение
Простите, но спутал, очевидно, не я — перечитайте первые два комментария ветки.
Я наоборот пытаюсь отойти от порочной практики «все-в-одном» и разделять даже целые классы на мелкие составляющие. Например, у меня реализуется подсистема кеширования. Она сотоит, по сути, из двух компонентов — один отвечает за чтение кеша, а другой за запись, обработку и сохранение метаданных. Так получается, что второй компонент занимает 3/4 подсистемы кеширования, однако его функционал не нужен для тех страниц, которые уже закешированы. Как результат, целиком cache.php загружается, например, 15 миллисекунд, а только та его часть, которая отвечает за чтение, примерно 4 миллисекунды. Я разделяю класс Cache на Cache и CacheHelper — второй класс автоматиечски подключается (include), когда вызываются функции типа Cache::write (фактически, эти функции служат прокси — они выглядят примерно так:
class Cache {

function write(...){
include_once('CacheHelper.php');
CacheHelper::write(...);
}
}

В итоге удается сэкономить довольно много времени выполнения скриптов, практически не меняя исходного кода конечного скрипта — он как вызывал Cache::read и Cache::write, не задумываясь о наличии CacheHelper, так и продолжает.

В случае с вашим же подходом, как я понимаю, CacheHelper будет в любом случае включаться в скрипт, независимо от того, закеширован уже результат или нет.
Хм, дочитал до конца вашу статью и нашел такие строки:
Заметьте также, что мы подключали весь Zend Framework. В реальных скриптах объем кода будет сильно меньше, т.к. обычно для работы требуется лишь незначительная часть ZF.

Так все-таки, ВЕСЬ фреймворк, или только классы для работы?
Ну это только потому, что вы ZF используете. Обратите свои взгляды на Yii, если написание своего фреймворка вам кажется предосудительным занятием.
Вы не правы. Lazy loading — это не когда вы загружаете весь свой фреймворк маленькими файлами, а когда файлы с классами подключаются по мере надобности.

790 PHP-файлов общим объемом 4.9 МБ — скажите, вам прямо на каждой странице вашего сайта весь этот код нужен? В том то и дело, что с такой архитектурой вы загружаете каждый раз много лишнего кода, на который тратиться время парсера и виртуальной машины. Судя по объему, я почти уверен, что на каждый запуск единовременно вам требуется не более 5-10 процентов кода, для 10 процентов получаются те же самые миллисекунды + 1.5 М вместо 31 М памяти (приблизительно).

Я вообще что-то с трудом представляю ситуацию, когда под байткод может потребоваться 31 М, и данное дело нельзя оптимизировать.
ну если религия не позволяет переводить все в конкретную кодировку вроде cp1251, то можно перевести в кодировку UCS-4BE и воспользоваться схемой регистров символов в исходниках mb_string. в файле unicode_data.h есть структура _uccase_map, которую можно практически целиком скопировать прямо в пхп (только {} заменить на array()).

разумеется, все это нужно только если а) требуется создать по-настоящему многоязычное приложения для рынков азии (а такую задачу вряд ли перед собой ставит автор Explay на данный прямо момент) и б) если extension_loaded(«mbstring») == false (впрочем опять же, умение делать программы, подстраивающиеся под любое окружение — это то еще дао, этим мало кто в 18 лет владеет)
И вдогонку, ru2.php.net/manual/ru/iconv.installation.php:
Этот модуль является частью PHP начиная с версии 5, так что библиотеки iconv.dll и php_iconv.dll более не нужны.
«если ничего не получается — прочтите, наконец, инструкцию» (закон мерфи) ПЕРЕД тем как ставить свой мелкописечный минусик

ru2.php.net/manual/en/function.iconv-strrpos.php
ru2.php.net/iconv
iconv наше все, и практически везде
кстати наоборот, в комбинации с eaccelerator использование lazy loading ускоряет загрузку сайта, а склеивание всего кода в один замедляет.
Хы, мне это напомнило анекдот с башорга:
sdert: Зачем нужен двужпроцессорный комп?
KIFIR: Чтоб одновременно смотреть фильм…
sdert: Одновременно с чем?
KIFIR: Одновременно с Вистой

Просто я уже несколько раз встречал готовые конфигурации (разных производителей, ноутов в том числе), в которых было почему то именно пять гигов памяти, вот мне и показалось это слегка странным… Как программист, предпочитаю все же степени двойки (шутка, просто само собой как то по жизни выходит).
Может, вы мне скажете — а зачем нужно именно ПЯТЬ гигов оперативки? Почему не восемь, не четыре?
Ну это и правильно — на обоих тарифах совершенно одинаковая скорость процессора. Только firstvds (за 150 рублей) дает 64 мегабайта памяти и всего гиг места на диске, впрочем, думаю для вашего скрипта это не так существенно?

А доступ к MySQL серверу, это да. Кроме этого, там еще есть доступ так же к Postgres/MSSQL/RubyOnRails/Tomcat/Яндекс.Сервер/Jabber серверам, SVN хостинг, отличные функции бэкапа/восстановления (кажется, даже не учитывается место) и куча всего еще. Мне кажется, что чисто по функциональности всем остальным российским хостингам очень далеко до 1гб.
1gb.ru прекрасен. Правда, не Xen, а OpenVZ, но это даже лучше, 5гб диска, 256 памяти и по 300 мгц от каждого ядра за 580 рублей.
Папа Римский тут совершенно не причем. Это вообще такое элементарное понятие, что его может не понять только школьник. Неужели школьники составляли мануал к PostgeSQL? Оооох.

Поясню — в футбольном матче (или в любом другом спортивном состязании), когда арбитр дает стартовый свисток, какая минута идет? Первая. Нулевой минуты нет и быть просто не может. Так же и в случае с датами — мы записываем не сколько дней/месяцев/годов прошло, а который день/месяц/год идет в данный момент — то есть 13-й день, 6-й месяц и 2009-й год. Нулевого года быть не может.
ЛОЛ, я говорю про другое кэширование все это время — про кэширование памяти. Вот описание к иллюстрации, которую я привел по ссылке выше:

Free memory
This memory is not being used currently

Wired memory
This information can't be moved to disk, so it must stay in RAM. The amount depends on the applications you are using.

Active memory
This information is currently in RAM and has recently been used.

Inactive memory
This information has not recently been used but will remain in RAM until another application needs more memory but no free memory is available. If called upon by a process, this is quickly changed to Active memory; if it has been swapped to the hard disk, it will be moved back to RAM and marked as Active.

So, в моих терминах кэширование=Inactive Memory, то есть память, которая может быть в любой момент освобождена/сброшена на диск аки своп.
«Прослойкой на старые API» печально известна Vista, в которой не работает большинство дров для XP. В семерке работают все дрова, которые работают в висте, пушо безо всяких прослоек.

channel9.msdn.com/forums/Coffeehouse/443119-windows-7--MinWin/?CommentID=443189
I've been fascinated by this whole «minwin» thing, to be honest. All it's been was refactoring code along architectural layering lines, and it's the natural extension of what we've been doing since the Longhorn Reset (so arguably Vista was the first «minwin» based operating system).

Вот что говорит непосредственно Microsoft Guy. Поверите ему, или останетесь при своем фанатично-неправильном мнении?
Вам википедию (ссылку я прислал) читать религия не озволяет?

Sinofsky described the Windows 7 kernel as a further evolution of the Windows Server 2008 kernel, itself an evolution of the Windows Vista kernel.

Новые в семерке только наборы тем (точнее, обоев к одной и той же по сути теме).
Ну да.

(Это не вам) По сути, кеширование это и есть «своп в памяти», просто то, что не влазит (и использовалось относительно давно), сбрасывается на диск.
Я что-то не понял отсылку к Капитану Очевидность, вы либо себе противоречите, либо кривите душой, говоря, что у вас всегда свободно треть памяти. У меня вот например редко бывает свободно больше полутора сотен метров (из 4г), только после перезагрузки, и говорю же, мне казалось что в линухе работа с памятью устроена аналогично.
unattend.ru/mypictures/Picture%209%2011-06-2009%2023:19:33.png — обратите внимание на цифры внизу, так устроена работа с памятью в макоси и в некоторых других юникс-подобных ОС.

Процессор? Так у меня и так, считайте, 2.4 ггц — примерно и есть старенький атлон, единственное отличие, что ядра два, а соответственно, две процессороемкие задачи могут выполняться параллельно, не мешаю друг другу — в этом же и есть преимущество более дорогих современных процессоров, так? И я его тоже стараюсь использовать на полную катушку.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность