Читать «Bash IT Happens Истории ## 2901 – 3000» онлайн - страница 23

Bash.org.ru IT

Милые наши клиенты, мы сделаем всё, что вы просите, но предостережем вас советом, если ваша просьба некорректна и может навредить. От вас требуется только одно — выслушать совет специалиста. А если вы приложите немного вежливости — это будет пределом мечтаний.

#2958: А Ethernet — на сладкое

15:00 26.04.2010, IT happens

Наша организация в своё время тянула оптику в славном Комсомольске-на-Амуре. Оптика предназначалась бравому милицейскому ведомству.

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

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

#2959: Опрометчивая оптимизация

15:00 26.04.2010, IT happens

Начну издалека. Есть такая модель вычислений: demand-driven computation. В ней считается только то, что нужно посчитать. А еще есть common subexpression elimination — это такая техника оптимизации в компиляторах. Проще всего объяснить на примере: из sqrt(2) в пяти местах компилятор один раз сделает double s2 = sqrt(2), после чего везде будет использовать s2. Это можно усугубить, вбив вместо вычисления sqrt(2) просто константу.

Так вот, когда-то давно, когда машины были большие, проводились сравнения разных компиляторов Фортрана. Им подсовывалась тестовая программа, измерялось время компиляции и время работы скомпилированного бинарника. Особенно в этом сравнении отличились два коммерческих компилятора.

Дело в том, что тестовая программа только что-то считала, но не выводила результат. Умный компилятор рассуждал так: если результат никому не нужен, зачем его считать? Это допустимое поведение, но не для Фортрана же! В результате тест был провален, потому что тестовая программа отрабатывала моментально. Да-да, вы правильно догадались. Оптимизированный вариант выглядел так: exit(0).

После этого в тест добавили вывод результата вычислений. Тут уже отличился другой продукт: компилировал тестовую программу он три часа, зато отработала она опять-таки моментально. В оптимизированном коде было нечто вроде printf(result) — программа сразу выводила результат вычислений, который компилятор в поте лица и считал так долго.

#2960: Копия копии копии

15:00 26.04.2010, IT happens

Госучреждение с небольшим штатом. Год назад всех внезапно посадили за компьютеры, а половина штата — тётушки предпенсионного возраста. Штатной единицы сисадмина нет, есть приходящий непостоянный. В итоге все юзерские косяки ложатся на коллег, кто понимает чуть больше косячащих. Мне повезло: телефон от горе-юзверей разрывается чаще, чем по моим прямым обязанностям — юридическим.