silicoid

Рейтинг
171
Регистрация
13.10.2014

SeVlad, Вы удивитесь, но PNG отлично сжимает ровные градиенты, что верикальные, что горизонтальные, что диагональные. Просто потому, что, подобный вид градиента можно очень легко описать математически, а вот настоящая проблема пнг, это шум. ч/б или цветной.

foxi, чертежи, схемы, графики лучше по прежнему держать в ПНГ. Он идеален для сжатия изображений с большими монотонными заливками.

Aisamiery,

Начну с хвоста

1. Тогда, когда я писал всё это добро, единственной возможностью графических процессоров (если их можно было так назвать) была возможность построения 2д примитивов.

это, напомню, был 1995-1996 год. (я не случайно упомянул 386й).

2. Почему на АСМ быстрее? Просто языки выского уровня добавляли (и добавляют) в код несчетное множество проверок, на которое тратится драгоценное машинное время. Разумеется, при переходе на низкоуровневый язык, все эти лишние преобразования, проверки и пр. можно (и в большинстве случаев нужно) убрать

3.В современных процессорах все еще сложнее, ведь они позволяют исполнять несколько различных арифметических операций над различными данными параллельно. И используя эту оптимизацию можно увеличить производительность кода до 3х раз

Ну как пример все современные процессоры, имеют суперскалярное исполнение команд. Если у вас идут сначала FADD потом FMUL, и операнды этих команд никак не связаны, то они выполнятся одновременно. В то же время, если Сложение использует результаты умножения, то эти действия будут выполнены последовательно.

Т.О. Оптимизировав некоторым образом команды можно получить гораздо более полную утилизацию процессорных вычислительных блоков, и, как следствие производительность

Aisamiery:
Интересный вариант у вас, вы же вкурсе что sizeof, count и прочии функции подсчета это неявные циклы?

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

Даже если программист четко следует алгоритму, то в силу своих знаний и/или предпочтений он может получить кардинально различное время запаковки/распаковки.

Либрусек, например на друпале написан

SeVlad:
Так если они используют одинаковый алгоритм (как тут утверждали) - почему так?

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

А кодировать/раскодировать данные можно разными способами, при этом получив нехилую разницу в производительности.

ну вот как пример три цикла обхода массива

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;
})
})
Всего: 1685