Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сумма чисел в столбце 
V
    Опции темы
s0lman
Дата 29.7.2009, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



В общем, провел несколько опытов.
Для опыта использовал индексный массив из 100 тыс. элементов.
В первой части опыта просто получал доступ к значению каждого элемента, а во второй уже выполнял действия с самими элементами массива.
Результаты меня немного удивили.
В первой части опыта foreach и for с переменным успехом опережали друг друга, с чего можно сделать вывод, что их использование примерно одинаковое по производительности, но цикл foreach гораздо удобнее использовать. Признаю свою ошибку выше ;)
Во второй части опыта, как и ожидалось, foreach  показал очень низкий результат, что не располагает к его использованию в подобных ситуациях.

З.Ы. Результаты опыта у меня примерно такие:
Цитата

foreach access 0.041108
for access 0.038568
foreach replace 0.153307
for replace 0.053427 


З.З.Ы.
На случай, если кто захочет проверить, прилеплю свой гениальный код  smile  

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  index.php 1,92 Kb


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
Ипатьев
Дата 29.7.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Цитата(s0lman @  29.7.2009,  21:52 Найти цитируемый пост)
очень низкий результат, что не располагает к его использованию в подобных ситуациях.

В подобных - это в каких? В циклах на сто тыщ итераций? Соглашусь. Для 0,00001% программ, где требуется такое количество оборотов, данная рекомендация будет иметь смысл.

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

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

Это сообщение отредактировал(а) Ипатьев - 29.7.2009, 22:40
PM MAIL   Вверх
s0lman
Дата 29.7.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



Цитата(Ипатьев @  29.7.2009,  22:35 Найти цитируемый пост)
В подобных - это в каких? 

В случаях изменения значения элементов массива smile


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
Ипатьев
Дата 29.7.2009, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



У автора топика этих элементов будет максимум сотня. Стоит ли разница в скорости на таком количестве итераций потраченного времени на обсуждение и тесты? 

Неужели не стыдно преподносить всю эту ерунду, как чудесные озарения, проливающие свет на всю дальнейшую профессиональную деятельность? 
PM MAIL   Вверх
nerezus
Дата 29.7.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

Для опыта использовал индексный массив из 100 тыс. элементов.
 Какое количество от всех проектов они составляли?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
s0lman
Дата 29.7.2009, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29



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

Цитата(nerezus @  29.7.2009,  22:48 Найти цитируемый пост)
Какое количество от всех проектов они составляли? 

Большое количество элементов взял для большей точности вычислений. В итоге, как видим, при изменении массива цикл foreach почти втрое медленней for.


--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
nerezus
Дата 29.7.2009, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 12
Всего: 43



Цитата

Большое количество элементов взял для большей точности вычислений. 
 А может оно действует по принципу противоКота Шредингера(принцип религии), и твое "увеличение" некоректно?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Ипатьев
Дата 29.7.2009, 23:20 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Дело в том, что относительные цифры ("в полтора раза") не значат ничего. Многие люди этого не понимают. Ведро воды больше, чем стакан? В 50 раз. А в масштабе мирового океана это имеет хоть какое-то значение? Или хотя бы в масштабе бассейна? 
И не надо мне тыкать ресурсами. Ресурсы экономят не на кавычках. 
PM MAIL   Вверх
icewind
Дата 29.7.2009, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: 20
Всего: 20



Согласен с Ипатьев.

Цитата(Ипатьев @  29.7.2009,  23:20 Найти цитируемый пост)
Ведро воды больше, чем стакан? В 50 раз. А в масштабе мирового океана это имеет хоть какое-то значение?

Особенно если оперировать придется максимум наперстками...


--------------------
user posted image
PM MAIL Skype   Вверх
SeregaGREY
Дата 6.8.2009, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 28.7.2006

Репутация: нет
Всего: 0



а как теперь можно не только складывать значения в столбцах, но и умножать значения в строках применительно к вашему скрипту?
то есть например:

1|2|3|круто
1|2|3|некруто
1|2|3|круто

в строках умножить 1ое и 3е значения и сложить все эти умнождения?

1*3 +1*3+1*3 = 9

Код

<?php
/*
Такой синтаксис файла будет более приемлимым:

1|2|3|круто
1|2|3|некруто
1|2|3|круто
*/

$stroki = file ('bd.dat') ;

$otwet = 0 ; //Переменная для ответа

foreach ($stroki as $stroka) //Проходимся по массиву  
{
    $yacheiki = explode ("|" , $stroka) ; //Разделяем строку на 4 ячейчи
    if ($yacheiki[3]=='круто') //Если в 4 ячейки текст "круто"
    {
        $otwet += $yacheiki[1] ; //Прибавляем к ответу значение второй ячейчи
    }
}

echo $otwet ; //Отображаем ответ

?>

PM MAIL   Вверх
Ипатьев
Дата 6.8.2009, 12:32 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Вот, кстати, о пользе написания готовых скриптов.
Казалось бы, простейшая операция - умножение. И, наверняка, если бы автор вопроса написал код сам, и понимал значение используемых в нем переменных, то с легкостью смог бы их перемножить.
А поскольку для него код - абракадабра, то даже с таким простым вопросом идет за помощью на форум.

SeregaGREY, твои значения лежат в массиве $yacheiki. Неужели ты не можешь перемножить две переменные?
PM MAIL   Вверх
SeregaGREY
Дата 6.8.2009, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 28.7.2006

Репутация: нет
Всего: 0



Цитата(Ипатьев @ 6.8.2009,  12:32)
Вот, кстати, о пользе написания готовых скриптов.
Казалось бы, простейшая операция - умножение. И, наверняка, если бы автор вопроса написал код сам, и понимал значение используемых в нем переменных, то с легкостью смог бы их перемножить.
А поскольку для него код - абракадабра, то даже с таким простым вопросом идет за помощью на форум.

SeregaGREY, твои значения лежат в массиве $yacheiki. Неужели ты не можешь перемножить две переменные?

$otwet += $yacheiki[1] *$yacheiki[3];
так?
PM MAIL   Вверх
Ипатьев
Дата 6.8.2009, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Примерно. Только элементы в массиве нумеруются с нуля, а значит должно быть
Код

$otwet += $yacheiki[0] *$yacheiki[2];


PM MAIL   Вверх
s0lman
Дата 6.8.2009, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и лохматый
**


Профиль
Группа: Участник
Сообщений: 637
Регистрация: 1.11.2007
Где: Ukraine

Репутация: 9
Всего: 29




<offtop>
Чем-то мне Ипатьев напоминает Фельдмаршала smile
</offtop>




--------------------
Когда я уже выучусь на волшебника? :(
PM   Вверх
bars80080
Дата 7.8.2009, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(s0lman @  6.8.2009,  15:04 Найти цитируемый пост)
Чем-то мне Ипатьев напоминает Фельдмаршала 

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

PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0844 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.