Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 25.06.2017
Сообщений: 68

Оптимизация кода. Не успевает выполниться за 30 секунд

20.06.2018, 18:10. Показов 2270. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
require "libs/simple_html_dom.php";
 
 
    function parseandwritetodb()
    {
        $html = file_get_contents('https://xn--90aiasbk5as2f.xn--p1ai/%D1%80%D0%B0%D1%81%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D1%80%D0%B5%D0%B7%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D1%82%D1%8B-%D0%BC%D0%B0%D1%82%D1%87%D0%B5%D0%B9-%D1%87%D0%BC-2018.html');
        $dom = str_get_html($html);
 
        $oddrows = $dom->find('.oddrow');
        $evenrows = $dom->find('.evenrow');
        if (file_exists('matches.txt')) unlink('matches.txt');
 
        for ($i = 0; $i <= 23; $i++) {
            $oddrows = preg_replace("/\s{1,}/", ' ', $oddrows);
            $evenrows = preg_replace("/\s{1,}/", ' ', $evenrows);
 
            $oddrows = str_replace("о матче", '', $oddrows);
            $evenrows = str_replace("о матче", '', $evenrows);
 
            $oddrows = str_replace("МСК", '', $oddrows);
            $evenrows = str_replace("МСК", '', $evenrows);
 
            $oddrows = str_replace("-", "0:0", $oddrows);
            $evenrows = str_replace("-", "0:0", $evenrows);
 
            $oddrows = preg_replace("/\s{1,}/", ' ', $oddrows);
            $evenrows = preg_replace("/\s{1,}/", ' ', $evenrows);
 
            if ($i != 0) file_put_contents('matches.txt', "\0", FILE_APPEND);
 
            file_put_contents('matches.txt', strip_tags($oddrows[$i]), FILE_APPEND);
            file_put_contents('matches.txt', "\0", FILE_APPEND);
 
            file_put_contents('matches.txt', strip_tags($evenrows[$i]), FILE_APPEND);
        }
        $txt = file_get_contents('matches.txt');
 
        $txt = preg_replace('|[\s]+|s', ' ', $txt);
 
        preg_match_all('/(\d+) ([а-яё]+) (\d\d:\d\d) ([а-яё]+) ((?:\d+|-):(?:\d+|-)) ([а-яё]+)/iu', $txt, $matches, PREG_SET_ORDER);
        for ($i = 0; $i < 43; $i++) {
            $match = R::dispense('matches');
            $match->day = $matches[$i][1];
            $match->month = $matches[$i][2];;
            $match->time = $matches[$i][3];
            $match->first_team = $matches[$i][4];
            $match->score = $matches[$i][5];
            $match->second_team = $matches[$i][6];
            R::store($match);
        }
    }
Тут создается ненужный промежуточный файл matches.txt и очень неумно написан код. Долго работает. Помогите оптимизировать и сделать из него РАБОЧИЙ код

Добавлено через 27 минут
Была использована библиотека redbean PHP
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.06.2018, 18:10
Ответы с готовыми решениями:

Скрипт не успевает выполниться до конца
Всем привет. Импортирую данные из txt файла в таблицу mysql. &lt;?php $dbhost = &quot;localhost&quot;; // Имя хоста БД $dbusername =...

Не успевает обновиться форма до следующей строки кода
Добрый день. Опять нужна помощь, просьба подсказать Есть небольшой код If Me. = 2 Or Me. = 4 Then Me. = Date ...

Оптимизация методом Ньютона (нахождение точки минимума). Оптимизация кода
MATLAB только начал осваивать. Попытался реализовать нахождение точки минимума методом Ньютона для функции 2*X12 - X1*X2 + 3*X22 -...

32
 Аватар для MaxQnei
11 / 11 / 5
Регистрация: 08.06.2015
Сообщений: 48
25.06.2018, 12:56
Студворк — интернет-сервис помощи студентам
edward_freedom, красава!)
Что и стоило подтвердить, вызов функции медленнее прямых действий.
1
 Аватар для edward_freedom
1569 / 1448 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
26.06.2018, 13:08
MaxQnei,
Цитата Сообщение от MaxQnei Посмотреть сообщение
Что и стоило подтвердить, вызов функции медленнее прямых действий.
Я выиграл. Включил максимальную оптимизацию компилятору c++
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Linear()
Result: 1671340799
IterationIndex: 0
Diff: 0.06
 
Linear()
Result: 1671340799
IterationIndex: 1
Diff: 0.059
 
Linear()
Result: 1671340799
IterationIndex: 2
Diff: 0.06
 
Functional()
Result: 1671340799
IterationIndex: 3
Diff: 0.059
 
Functional()
Result: 1671340799
IterationIndex: 4
Diff: 0.06
 
Functional()
Result: 1671340799
IterationIndex: 5
Diff: 0.059
Добавлено через 52 минуты
Мураша, версия пхп какая у тебя? Посмотри, я сделал замеры этого скрипта
Вот с версией пхп 5.5
Code
1
if(empty(TEXT)) {} Diff: 12.001s. Diff: 12.499s. Diff: 13.477s. Diff: 12.693s. Diff: 12.744s. if(TEXT == '') {} Diff: 12.734s. Diff: 12.812s. Diff: 12.328s. Diff: 12.689s. Diff: 12.847s.
А вот с 7.1 х64
Code
1
if(empty(TEXT)) {} Diff: 3.508s. Diff: 3.584s. Diff: 3.583s. Diff: 3.779s. Diff: 3.514s. if(TEXT == '') {} Diff: 4.485s. Diff: 4.533s. Diff: 4.532s. Diff: 4.521s. Diff: 4.581s.
Добавлено через 13 часов 0 минут
MaxQnei, от нефиг делать, проверил еще и на с#, там еще быстрее, чем на c++
Code
1
2
3
4
5
6
7
8
9
10
11
12
Linear
Diff 29
Linear
Diff 29
Linear
Diff 28
Functional
Diff 29
Functional
Diff 28
Functional
Diff 28
Так что, как и следовательно, твой nodejs смысла использовать нет совершенно, когда есть плюсы и шарп
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
26.06.2018, 13:34
Вы еще на ассемблере потестите))
Без функций все равно толком ничего не напишешь, к чему эти нанооптимизации.
0
 Аватар для edward_freedom
1569 / 1448 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
26.06.2018, 17:28
tarasalk, смысла нет, разработка сервера на чистом ассемблере будет адом, поэтому и тестировать смысла нет

Добавлено через 5 минут
tarasalk, Ну это было интересное исследование. Есть же разница, между 2.2 секунды с 0.06
0
 Аватар для MaxQnei
11 / 11 / 5
Регистрация: 08.06.2015
Сообщений: 48
26.06.2018, 21:48
edward_freedom, всё что я увидел, это соревнование которое вы придумали сами себе, и сами себе организовали победу.
Победителем был бы я если бы было желание писать на С++ и C#.

Добавлено через 3 минуты
Цитата Сообщение от tarasalk Посмотреть сообщение
к чему эти нанооптимизации.
Ну, тут не скажешь "нанооптимизация".
Запись в файл во время цикла занимает намного больше времени, чем запись один раз (после цикла).
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
26.06.2018, 22:13
Цитата Сообщение от MaxQnei Посмотреть сообщение
Запись в файл во время цикла занимает намного больше времени, чем запись один раз (после цикла).
Да, но я говорил про empty($text) и $text == ''. Они кстати немного различаются. Empty умеет работать с несуществующими переменными, возможно отсюда некоторое замедление.
В целом и ежу понятно что обертка в виде функции создает дополнительную нагрузку, но это разница настолько ничтожна, что не имеет значения. Лучше алгоритм оптимизировать.
0
 Аватар для edward_freedom
1569 / 1448 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
27.06.2018, 10:48
MaxQnei, Учись принимать поражения. Я опроверг твою теорию в пух и прах
Цитата Сообщение от MaxQnei Посмотреть сообщение
вызов функции медленнее прямых действий.
И то, что твой nodejs, ничем не лучше пхп. Если писать то на c++, c#, но никак не на нем
Цитата Сообщение от MaxQnei Посмотреть сообщение
соревнование которое вы придумали сами себе
Так начал сравнения именно ты
0
 Аватар для MaxQnei
11 / 11 / 5
Регистрация: 08.06.2015
Сообщений: 48
27.06.2018, 13:49
Цитата Сообщение от tarasalk Посмотреть сообщение
Да, но я говорил про empty($text) и $text == ''.
Да, но я говорил про оптимизацию кода который подан в этой задаче.

Цитата Сообщение от edward_freedom Посмотреть сообщение
Так начал сравнения именно ты
Да? Анука? Где? Пальцем тыкни. Не вижу. - Потому что нету.
Я бы сравнил на всех языках которые еще бы использовал.
0
 Аватар для edward_freedom
1569 / 1448 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
27.06.2018, 13:55
MaxQnei,
Цитата Сообщение от MaxQnei Посмотреть сообщение
Где?
Цитата Сообщение от MaxQnei Посмотреть сообщение
Я сравал на PHP & NodeJS
0
 Аватар для tarasalk
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
27.06.2018, 13:56
Цитата Сообщение от MaxQnei Посмотреть сообщение
Да, но я говорил про оптимизацию кода который подан в этой задаче.
Вы троллите что-ли? Задачу ТС давно уже никто не обсуждает.
1
27.06.2018, 14:08

Не по теме:

Цитата Сообщение от tarasalk Посмотреть сообщение
Вы троллите что-ли? Задачу ТС давно уже никто не обсуждает.
Точно не я здесь срачь развёл. Я чётко и ясно дал своё ответ, а то что начало выливаться дальше это уже не моих рук дело.

Софорумец говорит что я начал соревнование... С таким подходом, когда он будет заходить в магазин за мороженкой, я буду кричать что он своровал холодильник. Так то подумать, как он мог? Где пруфы? На видеокамерах ничего нет - он просто купил мороженку и вышел.
Но нет же! Он своровал холодильник! Вот прям 100%.

Я уже давным давно заметил что нет пункта соглашения при регистрации - "n. Запрещается НЕ придераться абсолютно к каждому ответу на вопрос".

Я не считаю задачу закрытой пока автор (или модератор) не закроют её.
Тема задачи - есть тема задачи.


В общем. Я уверен что мои мысли дошли, а, ..., дальше я писать не буду, потому что слишком много хейтеров.

Спасибо!)

0
27.06.2018, 14:15

Не по теме:

MaxQnei, Ты начал обсирать пхп и поклоняться nodejs, тем что он быстрее пхп. Я же в свою очередь обсер твой nodejs, в сторону быстроты над ним c# и c++. Ты вместо того, чтобы помочь тс с решением его проблемы, начал производить сравнения с другими языками, а я за любую движуху кроме голодовки и с удовольствием продолжил этот марафон кто лучше

1
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
28.06.2018, 00:08
 Комментарий модератора 
Воздерживаемся от оффтопа. Напомню тему задачи. Есть код, надо доработать или переписать его так, чтобы он выполнялся быстрее. Все


Добавлено через 4 минуты
Оптимизации надо начинать с анализа ситуации.
Ультимативное решение - подключаем xhprof и смотрим что выполняется дольше всего, там и прикладываем усилия.
В лишь один file_get_contents('https может выполняться бесконечно долго - все зависит от удалённого сервера и сети.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.06.2018, 00:08

Оптимизация кода. Замер времени выполнения части кода.
Доброе утро. Есть желание посмотреть сколько времени занимает выполнение какого-то блока кода/отдельной функции или процедуры/программы...

Запуск кода каждые 5 секунд
Доброе врямя суток наро! Пытался сделать каждые пять секунд запуск кода , но ничего не получилось! У меня на кнопе буттон...

Задержка выполнения кода на несколько секунд
Здравствуйте. Как прервать выполнение кода на некоторое количество секунд? Ну например, вводит пользователь а и в, жмет кнопку, а...

Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация
Много много лет назад, на заре становления профессии &quot;оптимизатора&quot; в какой то умной книжке был создан миф. Это миф о цветовой индефикации...

Как заморозить выполнение кода на несколько секунд?
Здравствуйте. Подскажите как приостановить работу кода на определенное время? На Python это реализуется очень просто: import time ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости. Решение: Создан документ со следующими. . .
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово. Решение: Создан документ с единственным. . .
Сумма и количество положительных элементов в чётных строках массива
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить сумму и количество положительных элементов массива, расположенных в четных строках. Решение: Создан документ с. . .
Поиск произведения положительных чётных чисел в последовательности
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Дана произвольная последовательность целых чисел. Найти произведение положительных четных чисел данной последовательности. . . .
Обработка трёх чисел: утроение и возведение в степень
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Даны три действительных числа. Утроить те из них, значения которых неотрицательны, и возвести в четвертую степень отрицательные. . . .
Расчёт стоимости яблок по весу
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Написать программу вычисления стоимости некоторого количества (по весу) яблок. Решение: Создан документ, с табличной частью. . .
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru