Найти минимальный коэффициент из многих строк


Это мой код. У меня есть файл, чья первая вторая строка это слово содержит ряд. Пусть эта цифра составляет . 2-я строка пустая, а с третьей линии, мне дали два номера через пробел в каждой строке, где пусть первое число и . Теперь мне нужно выяснить минимальный , где на линию метод ceil($у / $ш) * $ц. Есть в любом случае я могу оптимизировать мой код.

<?php
$f = file($argv[1]);
list(, $u) = explode(" ", $f[0]);
list($c, $w) = explode(" ", $f[2]);
$b = ceil($u / $w) * $c;
unset($f[0], $f[1], $f[2]);

foreach($f as $l)
{
    list($c, $w) = explode(" ", $l);
    $b = min($b, ceil($u / $w) * $c);
}

echo "$b\n";
exit;
?>


226
2
php
задан 31 октября 2011 в 06:10 Источник Поделиться
Комментарии
2 ответа

Я предполагаю, что мой комментарий действительно был ответ на философский лад. Так вот ответ:

Использовать имена переменных, которые имеют смысл.

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

Как сказал palacsint: 'это не будет медленнее, если вы используете больше и читаемые имена переменных, но это может быть быстрее, когда люди это понимают и видят, как улучшить его.

4
ответ дан 2 ноября 2011 в 03:11 Источник Поделиться

Я не гуру в PHP, так как это более или менее просто некая общая идея.

Может не читать весь файл в один шаг. Эти вопросы (и комментарии) могли быть актуальны:

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

Я мог представить, что освобождение эти небольшие участки памяти, может также медленно работающем с минимальным приростом:

unset($f[0], $f[1], $f[2]);

(Если вы пропустите его, не забудьте пропустить первые 3 пункта внутри оператора foreach.)

Изменение двойные кавычки, возможно, некоторое повышение производительности, особенно внутри цикла foreach петли. (Есть бенефис одной цитаты против двойных кавычек в PHP?)

Использование ссылок в командлет foreach может также иметь некоторую выгоду.

В любом случае, вы должны измерить затраты на эти (и другие) изменения.

0
ответ дан 2 ноября 2011 в 04:11 Источник Поделиться