Артем Л.
11416 сообщений
#15 лет назад
Ужас...
Александр К.
4607 сообщений
#15 лет назад
Elhsmart
ответ на "кусок кода:

сердце стрела бесконечность

от себя: думаю оптимизировать можно долго.
Эдуард Третьяков
269 сообщений
#15 лет назад
Цитата ("k-a-j"):
Elhsmart
ответ на "кусок кода:

сердце стрела бесконечность

от себя: думаю оптимизировать можно долго.

Эм... Чувак, отсыпь! Я тоже хочу такой травы! ^_^
Александр К.
4607 сообщений
#15 лет назад
Elhsmart
Ладно, итераций нет, Но кайф есть. Ив чем он? В есть или нет?
Иван Ф.
872 сообщения
#15 лет назад
Цитата ("rui"):
Цитата:
"Люди до 20 лет, в сервисе менее 3 месяцев и без положительных отзывов (не мене 3) не рассматриваются."

А если по одному из данных критериев я не подхожу? Например, мне 19 лет - мы с Вам не сможем сотрудничать?

если только 19 лет, а по остальным критериям все сходится - тогда можно сотрудничать
Больше всего пугает не возраст а отсутствие положительных отзывов и период регистрации.
в данном случае, я оплату проводил бы по факту (без предоплаты)
но не факт что я бы получил качественно выполненую работу, а это ведет за собой последствия: 1. эмоции 2. выяснения кто прав, а кто нет 3. потеря времени
вот и делайте выводы почему появляется подобные темы на форуме ("Ограничения по возрасту"
Вадим Т.
3240 сообщений
#15 лет назад
1. Я бы так этот кусок кода соптимизировал, если, конечно, массив $array не занимает большую часть выделенного скрипту памяти:

echo join('', $array);

Это - мой выбор для таких ситуаций, для небольших массивов.

2. Но если массив $array огромен, и память дорога, то вот неплохой вариант (но он примерно в 2 раза медленнее предыдущего):

for($i=0, $maxi = count($array); $i < $maxi; $i++) {
echo $array;
}

Но увы, у этого метода могут быть проблемы... ведь индексы в массиве в PHP не всегда могут идти подряд. Запросто может быть такая ситуация:

$array = array(1, 2, 33, 4, 55);
unset($array);

- если массив потенциально мог бы подвергнуться подобным действиям, то вышеприведенный вариант использовать нельзя без предварительной предподготовки массива (а это медленно)!

3. Также, в зависимости от размера массива и природы данных, неплохие, и, главное, правильные результаты может показывать:

foreach ($array as &$item) {
echo $item;
}

Этот метод защищен от недостатков предыдущего варианта, и очень элегантно выглядит, но более медленный (увы, часто это где-то в 3 раза медленнее предыдущего варианта, и в 6 раз медленнее первого варианта).

P.S. Цифры сравнения производительности привел навскидку, теоретически. Кому интересно, можете замерить время и проверить на практике. Интересно будет глянуть, а то PHP сейчас под рукой нет.
Tan Sa
127 сообщений
#15 лет назад
Тока что возникла дикая мысль. А мож дело во мне? Может бросить курить и думать как все?
Вадим Т.
3240 сообщений
#15 лет назад
Цитата ("Aristo"):
Мне 22 года. Почему это я не могу быть профессионалом?

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

Вы можете быть профессионалом в 22 года, и в 18 лет, и даже в 14. Но вот представьте, перед Вами есть выбор, около 100 потенциальных исполнителей для Вашего проекта. Среди них есть 14-летние, 20-летние, 30-летние, и т.д., всех примерно равномерно. Что, будете всех их рассматривать, смотреть их работы, собеседовать? А если времени не так уж и много? Отож. Сразу включите голову, и отсечете наиболее рисковые группы. Скажем, всех молодых, всех кто на сервисе только что зарегистрировался, и т.д. Вот и тот заказчик так же делает, это нормально.

Еще про возраст. Проблема в том, что выводы о адекватности и профессионализме можно делать только после того, как пообщаетесь и поработаете с человеком. Конечно же 20-летний программист может быть намного талантливее, вежливее и стабильнее некоего 30-летнего ламера. С этим никто не спорит.

Речь же идет о том, что если сталкиваетесь и с некиим незнакомым школьником, и с незнакомым спецом зрелого возраста, то что в среднем ожидать? Среди зрелых спецов адеквата и проффессионализма в среднем больше, согласитесь, потому что это - их работа, а не увлечение или проба себя в жизни.

И тратить все свое время и деньги на то, чтобы из 200 незнакомых студентов выявить одного талантливого и стабильного - крайне расточительно, тем более что он скорее всего не будет работать лучше чем обычный средний зрелый спец, которых много. Да и после первого же успешного проекта такой талант сразу резко поднимет себе цену.

P.S. Это - просто IMHO статистический подход, я могу быть и неправ...
Tan Sa
127 сообщений
#15 лет назад
Предложение!!!!!

Предлогаю всем фрилансерам стереть возраст в аккаунте!
Роман К.
6970 сообщений
#15 лет назад
Цитата ("sa_t_an"):
Предложение!!!!!
Предлогаю всем фрилансерам стереть возраст в аккаунте!

Ага. И лишить фрилансеров "в возрасте" их преимущества.
Эдуард Третьяков
269 сообщений
#15 лет назад
Цитата ("tvv"):

Но увы, у этого метода могут быть проблемы... ведь индексы в массиве в PHP не всегда могут идти подряд. Запросто может быть такая ситуация:

$array = array(1, 2, 33, 4, 55);


RTFM.

$array = array(1, 2, 33, 4, 55);
echo("count: ".count($array));
>>> run
count: 5
Тут М.
626 сообщений
#15 лет назад
elhsmart
Ты забыл про одну операцию:
unset($array);
Эдуард Третьяков
269 сообщений
#15 лет назад
Цитата ("Demiurh"):
elhsmart
Ты забыл про одну операцию:
unset($array);

Истинно только для консольных скриптов, где время работы может измеряться часами и нужен контроль над памятью.
Вот там есть смысл использовать unset().
В остальных случаях при завершении работы за тебя это сделает сборщик мусора и освободит память, занятую массивом.
З.Ы. вообще распределение памяти в любом языке - сложная вещь ^_^
Артем Л.
11416 сообщений
#15 лет назад
Цитата:
З.Ы. вообще распределение памяти в любом языке - сложная вещь

Точно точно
Олег Томенко
257 сообщений
#15 лет назад
Цитата ("elhsmart"):
Цитата ("olegTomenko"):

for($i=0;$i<count($array);$i++){
print($array);
}

Эм... Смотри, при каждой итерации заголовок цикла у тебя снова повторяется. В итоге каждую итерацию у тебя снова и снова будет вычисляться count(). А это не есть хорошо. sa_t_an написал правильный кусок кода. Без обид, но твое решение действительно не верно.


Это шутка была
Александр К.
15 сообщений
#15 лет назад
Цитата ("sa_t_an"):
Гы...
Моя ИМХА, тут имелось в виду явно ОПЫТ а не возраст, часто люди до 25 лет считают себя пупком вселенной. Затем с ВОЗРАСТОМ понимаешь, что находишься в околопупковом местоположении, и уже к 30 годам осознаёшь, что оказывается ты не в пупке, а чуть ниже и путь к этому самому пупку оказывается тернистым и долгим, хотя помощь на этом пути как раз и оказывает ОПЫТ.

Вот вам пример/задачка на тему опыта/возраста.
Имеем нумерованый массив $array = array('q','w','e','r';

Требуется вывести на экран три надписи
1. Значения массива по порядку
2. Только нечетные значения массива
3. Только четные значения массива

Попробуйте сделать простой скрипт, но по возможности оптимизированным и более компактным!!!


мой бывший одноклассник в 14 лет писал сортировку массива бинарным деревом (:
Эдуард Третьяков
269 сообщений
#15 лет назад
Цитата ("olegTomenko"):
Это шутка была

Я видать запарилсо мозгаме сапсем ^_^
Ты бы хоть смайлик поставил чтоль, а то и не понять сразу шутки было-то.
Эдуард Третьяков
269 сообщений
#15 лет назад
Цитата ("Laskost"):
мой бывший одноклассник в 14 лет писал сортировку массива бинарным деревом (:

У нас вся группа факультативщиков по информатике и выч.технике такую сортировку писала в качестве лабораторной работы. Тоже примерно в 14-15 лет.
Вадим Т.
3240 сообщений
#15 лет назад
Цитата ("elhsmart"):
Истинно только для консольных скриптов, где время работы может измеряться часами и нужен контроль над памятью.
Вот там есть смысл использовать unset().
В остальных случаях при завершении работы за тебя это сделает сборщик мусора и освободит память, занятую массивом.

1. Неужели? Насколько я знаю, unset используется не только для освобождения памяти, а также, например, если нужно для выполнения какой-либо рабочей задачи банально удалить какие-либо элементы массива или другой структуры данных. А Вы, простите, как элементы из массива удаляете? Знаете какой-либо другой способ, получше?

Поэтому можно ожидать, что на вход может прийти массив, для которого count($array) вернет правильное значение, но перебор по порядковому индексу будет невозможен. Особенно это нельзя забывать разработчикам библиотек и фреймворков, которые используют другие программисты.

2. Но даже и про контроль памяти Вы немного не туда смотрите... Допустим, Ваш скрипт (не консольный, а запускаемый веб сервером) в процессе работы сначала обратывает некий массив, пусть и небольшой, а затем выполняет с результатом обработки ряд действий. "Сборщик мусора", как Вы его назвали (PHP - это не Java и не Python, тут все намного примитивнее, и это правильно для решения поставленных перед PHP задач), не освободит сам по себе выделенную под массив память, если конечно он не находится в локальном контексте, а будет ждать, пока скрипт отработает до конца. Можете проверить самостоятельно.

Ну ладно. Допустим, Ваш сервер находится под высокой нагрузкой, и этот скрипт вызывается очень часто. Что получается? Вместо того, чтобы скрипт как можно скорее освободил выделяемую память для других скриптов, он будет ее удерживать, пока не выполнится, и не отдаст пользователю результат, и в конце концов получается, что общая производительность системы будет существенно падать... Так что уверенно могу сказать, что для разработчика высокопроизводительных систем на PHP языковая конструкция unset - лучший друг.
Эдуард Третьяков
269 сообщений
#15 лет назад
Цитата ("tvv"):
Ну ладно. Допустим, Ваш сервер находится под высокой нагрузкой, и этот скрипт вызывается очень часто. Что получается? Вместо того, чтобы скрипт как можно скорее освободил выделяемую память для других скриптов, он будет ее удерживать, пока не выполнится, и не отдаст пользователю результат, и в конце концов получается, что общая производительность системы будет существенно падать... Так что уверенно могу сказать, что для разработчика высокопроизводительных систем на PHP языковая конструкция unset - лучший друг.

О том, как работает unset() и для чего он нужен я прекрасно представляю.
Однако даже в PHP для измерения расхода памяти есть 2 функции. Одна из них - get_memory_peak_usage(); И пиковый расход памяти у вас не изменится, хоть вы используйте unset, хоть не используйте.
Дык вот все зависит от того, с каким модулем в качестве worker'a скомпилен Apache.
А ваш туманный "под нагрузкой" - это пока сама серверная машина не начала жрать swap-space.
Снова таки, повторюсь, эффективность unset'a - это очень большой вопрос и зависит от множества параметров, поэтому говорить здесь что-то однозначно невозможно.