APC является насущной необходимостью. Мало того, что это делает для большой системы кэширования, но усиление из автокэшируемых файлов PHP является удачей. Что касается нескольких идея базы данных, я не думаю, что Вы вытащили бы много из наличия различных баз данных по тому же серверу. Это может дать Вам что-то вроде усиления в скорости в течение времени запроса, но я сомневаюсь относительно усилий, которые это приложило бы, чтобы развернуть и поддержать код для всех трех при проверке, что они находятся в синхронизации, стоило бы того.
я также настоятельно рекомендую выполнение Xdebug для нахождения узких мест в программе. Это сделало оптимизацию бризом для меня.
C ++ Standard 2003. 10.3.5
Тип возвращаемого значения переопределения функция должна быть либо идентична возвращаемый тип переопределенного функция или ковариантная с классами функций. Если функция D :: f отменяет функцию B :: f, возврат типы функций ковариантны если они удовлетворяют следующим критерии:
- оба являются указателями на классы или ссылки на классы
- класс в возвращаемом типе B :: f - это тот же класс, что и класс в тип возврата D :: f, или - это однозначный и доступный прямой или косвенный базовый класс класса в тип возвращаемого значения D :: f
- и указатели, и ссылки имеют такое же резюме и тип класса в возвращаемом типе D :: f имеет такое же резюме, что и или меньше резюме, чем класс введите тип возвращаемого значения B :: f.
Если тип возвращаемого значения D :: f отличается из возвращаемого типа B :: f, тип класса в возвращаемом типе D :: f должны быть завершены в момент декларация D :: f или должна быть тип класса D. При переопределении функция называется финальной переопределитель замещаемой функции, его результат преобразуется в тип возвращается (выбранным статически) переопределенная функция (5.2.2).
Пример:
class B {};
class D : private B { friend class Derived; };
struct Base {
virtual B* vf4();
virtual B* vf5();
};
class A;
struct Derived : public Base {
D* vf4(); // OK: returns pointer to derived class
A* vf5(); // error: returns pointer to incomplete class
};
Pff, слишком длинные стандартные кавычки.
Вы можете использовать другой тип как ковариантный, если (a) это указатель / ссылка (b) его можно привести к предыдущему типу возврата простое добавление константы, известной во время компиляции (c), она соответствует всем квалификаторам с постоянным изменением.