SeVlad, Вы удивитесь, но PNG отлично сжимает ровные градиенты, что верикальные, что горизонтальные, что диагональные. Просто потому, что, подобный вид градиента можно очень легко описать математически, а вот настоящая проблема пнг, это шум. ч/б или цветной.
foxi, чертежи, схемы, графики лучше по прежнему держать в ПНГ. Он идеален для сжатия изображений с большими монотонными заливками.
Aisamiery,
Начну с хвоста
1. Тогда, когда я писал всё это добро, единственной возможностью графических процессоров (если их можно было так назвать) была возможность построения 2д примитивов.
это, напомню, был 1995-1996 год. (я не случайно упомянул 386й).
2. Почему на АСМ быстрее? Просто языки выского уровня добавляли (и добавляют) в код несчетное множество проверок, на которое тратится драгоценное машинное время. Разумеется, при переходе на низкоуровневый язык, все эти лишние преобразования, проверки и пр. можно (и в большинстве случаев нужно) убрать
3.В современных процессорах все еще сложнее, ведь они позволяют исполнять несколько различных арифметических операций над различными данными параллельно. И используя эту оптимизацию можно увеличить производительность кода до 3х раз
Ну как пример все современные процессоры, имеют суперскалярное исполнение команд. Если у вас идут сначала FADD потом FMUL, и операнды этих команд никак не связаны, то они выполнятся одновременно. В то же время, если Сложение использует результаты умножения, то эти действия будут выполнены последовательно.
Т.О. Оптимизировав некоторым образом команды можно получить гораздо более полную утилизацию процессорных вычислительных блоков, и, как следствие производительность
Это я привел к тому, что даже одну простейшую функцию, как подсчет контрольной суммы, можно написать тремя различными способами, получив при этом совершенно разное время работы.
Даже если программист четко следует алгоритму, то в силу своих знаний и/или предпочтений он может получить кардинально различное время запаковки/распаковки.
Либрусек, например на друпале написан
всё очень просто. если бы они использовали одинаковую библиотеку, то было бы меньше вопросов. (хотя ее можно тоже здорово затормозить, просто откомпилировав с ключами, не предусматривающими внеочередное исполнение инструкций)
А кодировать/раскодировать данные можно разными способами, при этом получив нехилую разницу в производительности.
ну вот как пример три цикла обхода массива
1.
$iMax = sizeof($somearray); for ($i=0; $i<$iMax; $i++){ $item = $somearray[$i]; $x = $x+$item; }
2.
for ($i=0; $i<sizeof($somearray); $i++){ $item = $somearray[$i]; $x = $x+$item; }
3.
foreach ($somearray as $item){ $x = $x+$item; }
так вот, несмотря на то, что все эти кусочки кода выполняют одно и то же, но скорость выполнения отличается в разы
1 вариант: 58мс
2 вариант: 144мс
3 вариант: 39мс
а всё потому, что в for постоянно происходит запуск функции sizeof, которая жрет много процессорного времени---------- Добавлено 26.02.2018 в 14:46 ----------добавлю. многое зависит не только как написано, сколько и на чем написано.
я, наверное рассказывал, как в студенчестве писал вьювер, который на 386м умудрялся крутить видео МПЕГ1 в VGA на полной скорости, а всё почему?
потому, что он был практически полностью написан на ассемблере.
а если я то же самое переписывал на сях, то получал 4-6 кадров в секунду
seosniks, если у вас все формирование происходит в одном месте, тогда и мой вариант вполне подойдет
только return в данном случае не очень то уж и нужен
seosniks, Ваш вариант, через сессии, может оказаться нерабочим, к сожалению.
если формирования нижней части происходит перед формированием шапки, то подобный код выдаст предупреждении о пустой переменной.
Имхо, если не заработает, то придется устраивать бубенные танцы с джи эсом
function total_monet($cenamonets=''){ echo $cenamonets; return ; }
в любом месте
<?php total_monet('любое_значение'); ?>
варианты
<?php total_monet($cenamonets); ?>
апд. я не правильно понял условие. Видимо
идет разговор о разных несвязанных шаблонах.
тогда только через JS
dma84, Очень интересный вариант!
danforth, Ну суровый, в смысле больше, чем в одну строчку )
Василич#, тогда можно поступить следующим образом
1. подключить deviceJS - это такой миниатюрный скрипт, написаный на чистом JS, который в зависимости от того, какое у вас устройство добавляет соответствующие классы на body
2. добавляем примерно такой код [ jQuery ]
$(document).ready(function(){ $('body.mobile #menu .has-sub > a, body.tablet #menu .has-sub > a').click(function(){ return false; }) })