Мне любопытно, там любое увеличение производительности, как использование меньшей памяти или ресурсов в PHP для:
50 различных переменных установки, сохраненных в массив как это
$config['facebook_api_secret'] = 'value here';
Или 50 различных переменных установки, сохраненных в Константу как это
define('facebook_api_secret', 'value here');
Я думаю, что это в царстве быть микрооптимированием . То есть разница достаточно мала, чтобы не стоит использовать одно решение над другим ради производительности. Если бы производительность была такая критическая для вашего приложения, вы не будете использовать PHP! : -)
Используйте все удобнее или что имеет больше смысла. Я вставляю данные конфигурации в константы, если только потому, что им нельзя разрешать изменять после нагрузки файла конфигурации, и это то, для чего есть постоянные.
Ссылки используются для псевдонимирования переменных и были необходимы для эффективного использования старой объектной системы.
В PHP- 4 объекты вели себя как любой другой тип значения, то есть присвоение создавало бы копию объекта. Чтобы избежать этого, необходимо использовать ссылку, как в примере кода.
При использовании PHP 5 переменные объекта больше не содержат самого объекта, но дескриптор (идентификатор объекта AKA) и назначение будут только копировать дескриптор. Использование ссылки больше не требуется.
-121--2195380-Я, кажется, нашел ответ. Я поместил основную часть кода чертежа (который ранее был в onDraw ()) в новый метод doDrawing (). Этот метод начинается с создания нового растрового изображения размером больше экрана (достаточно большого для хранения всего чертежа). Затем создается второй Холст, на котором выполняется подробный чертеж:
BufferBitmap = Bitmap.createBitmap(1000, 1000, Bitmap.Config.ARGB_8888);
Canvas BufferCanvas = new Canvas(BufferBitmap);
Остальная часть метода doDrawing () передается с подробным чертежом в BufferCanvas.
Теперь весь метод onDraw () выглядит следующим образом:
@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(BufferBitmap, (float) -posX, (float) -posY, null);
}
Переменные позиции, posX и posY, инициализируются в 0 в методе onCreate () приложения. Приложение реализует OnGestureListener и использует аргументы distureX и distureY, возвращенные в уведомлении OnScroll, для увеличения posX и posY.
Похоже, это все, что нужно для реализации плавной прокрутки. Или я что-то чересчур выгляжу!?
-121--154â5-В ходе моих неофициальных тестов я обнаружил, что доступ/определение констант выполняется несколько медленнее, чем обычные переменные/массивы.
это все равно не сделает другого; более чем вероятно, что все, что вы сделаете с ними, произойдет через тысячные доли секунды.
Оптимизация базы данных (индексирование, использование инструкции ПОЯСНИТЬ для проверки запросов) и набор сервера (с помощью APC) в долгосрочной перспективе будут иметь большее значение.
NSLog является медленным и не должен использоваться для создания версий. Простой макрос, подобный приведенному ниже, отключит его вместе с любыми утверждениями, которые могут быть у вас, которые также должны быть отключены. В менее распространенном случае, когда требуется NSLog в сборке выпуска, просто вызовите его напрямую. Не забудьте добавить «-DNDEBUG» в параметры настройки сборки «другие флаги c».
#ifdef NDEBUG
#define MYLog(f, ...)
#else
#define MYLog(f, ...) NSLog(f, ## __VA_ARGS__)
#endif
-121--687757- Вы когда-нибудь добавляли два целых числа с помощью +
, а затем позже добавили целое число к числу с плавающей запятой с помощью +
?
Вы когда-либо регистрировали x.toString ()
, чтобы помочь вам что-то отладить?
Я думаю, что вы уже цените полиморфизм, просто
-121--2098116-Повышение производительности для 50 переменных с использованием другой техники кодирования/умных трюков программирования - неправильный способ сделать вещи в PHP. Всегда помните: оптимизатор умнее вас .
Вы не получите никакого прироста производительности ни для одного из них. Вопрос в том, какой из них более полезен.
Для скалярных значений (строки, инты и т.д.), которые определены один раз, никогда не должны меняться, и должны быть доступны везде, вы должны использовать константу.
Если у вас есть какая-то сложная вложенная конфигурация, например:
$config->facebook->apikey = 'secret_key';
$config->facebook->url = 'http://www.facebook.com';
Вы можете захотеть использовать массив или конфигурацию api, предоставляемую одним из множества фреймворков (Zend_Config неплохо)
.