All streams
Search
Write a publication
Pull to refresh
12
0
PuzzleW @PuzzleW

User

Send message
рассказываю

ubuntu server 10 (32 битный как я понимаю) в vmware 7.xx на w7x64@Q8400+4GbDDR2

MACHTYPE=i686-pc-linux-gnu

/home/puzzle/habr# g++ --version
g++ (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5

полностью повторил вчерашний эксперимент:
вот логи maketest: pastebin.com/6sgS7H4V

второй хост: (vds 300mhz, 64 ram, freebsd)
(bash там не было, поэтому в makefile исправил на /bin/sh, по идее x86)

> g++ --version
g++ (GCC) 4.2.1 20070719 [FreeBSD]

вот результаты: pastebin.com/Z0fsJyB5
(кстати, они подтверждают Ваши!)
А вот что ещё интересно, на этом же хосте (без скрипта): pastebin.com/RjbrXmwU

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


вот результаты этого же скрипта на вашем хосте:

MACHTYPE=x86_64-redhat-linux-gnu
OSTTYPE=x86_64
g++ (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)

pastebin.com/76bhjjtH

мой вариант действительно тут медленнее.

но это ещё не всё! =) смотрите мой пост ниже.
Кстати, претензия к int снята %)
Вы знаете, я почти поверил в то что ваш вариант быстрее. Поскольку в моем по факту 4 вычитания и 2 сравнения в теле цикла, а у вас всего лишь 1 инкремент.

но решил проверить — результат прямо противоположный.

./maketest
puzzle@somehost:/home/puzzle/habr# time ./test_borisko3

real 0m0.401s
user 0m0.252s
sys 0m0.148s
puzzle@somehost:/home/puzzle/habr# time ./test_puzzle3

real 0m0.257s
user 0m0.108s
sys 0m0.144s
puzzle@somehost:/home/puzzle/habr#
time ./test_borisko

real 0m0.899s
user 0m0.340s
sys 0m0.556s
puzzle@somehost:/home/puzzle/habr# time ./test_puzzle

real 0m0.746s
user 0m0.640s
sys 0m0.108s

Но обратите внимание на результаты в вариантах БЕЗ оптимизации!

cpp полностью скопирован из вашего.

решил перепроверить несколько раз и вот результаты:

borisko with -O3
real 0:00.40 user 0.25 sys 0.14
real 0:00.40 user 0.26 sys 0.13
real 0:00.41 user 0.25 sys 0.15
real 0:00.40 user 0.26 sys 0.13
real 0:00.42 user 0.28 sys 0.13
puzzle with -O3
real 0:00.26 user 0.12 sys 0.13
real 0:00.24 user 0.11 sys 0.13
real 0:00.24 user 0.11 sys 0.13
real 0:00.26 user 0.11 sys 0.14
real 0:00.25 user 0.11 sys 0.14
borisko
real 0:00.77 user 0.63 sys 0.13
real 0:00.76 user 0.62 sys 0.14
real 0:00.75 user 0.58 sys 0.17
real 0:00.76 user 0.61 sys 0.15
real 0:00.76 user 0.58 sys 0.18
puzzle
real 0:00.77 user 0.58 sys 0.18
real 0:00.76 user 0.58 sys 0.17
real 0:00.76 user 0.60 sys 0.16
real 0:00.76 user 0.62 sys 0.14
real 0:00.77 user 0.61 sys 0.15
(дергалось скриптом из под /bin/sh)

вот более детально:
borisko with -O3

real 0m0.402s
user 0m0.264s
sys 0m0.136s

real 0m0.395s
user 0m0.268s
sys 0m0.124s

real 0m0.398s
user 0m0.256s
sys 0m0.140s

real 0m0.405s
user 0m0.264s
sys 0m0.136s

real 0m0.400s
user 0m0.260s
sys 0m0.136s
puzzle with -O3

real 0m0.247s
user 0m0.108s
sys 0m0.140s

real 0m0.249s
user 0m0.108s
sys 0m0.136s

real 0m0.242s
user 0m0.100s
sys 0m0.140s

real 0m0.243s
user 0m0.116s
sys 0m0.124s

real 0m0.240s
user 0m0.104s
sys 0m0.132s
borisko

real 0m0.753s
user 0m0.596s
sys 0m0.152s

real 0m0.761s
user 0m0.628s
sys 0m0.132s

real 0m0.751s
user 0m0.580s
sys 0m0.172s

real 0m0.750s
user 0m0.592s
sys 0m0.156s

real 0m0.760s
user 0m0.604s
sys 0m0.152s
puzzle

real 0m0.762s
user 0m0.628s
sys 0m0.132s

real 0m0.761s
user 0m0.624s
sys 0m0.132s

real 0m0.760s
user 0m0.612s
sys 0m0.144s

real 0m0.762s
user 0m0.592s
sys 0m0.168s

real 0m0.762s
user 0m0.636s
sys 0m0.124s

перед отправкой ещё раз решил вызвать time вручную, смотрите:
puzzle@somehost:/home/puzzle/habr# time ./test_borisko

real 0m0.774s
user 0m0.544s
sys 0m0.228s
puzzle@somehost:/home/puzzle/habr# time ./test_puzzle

real 0m0.766s
user 0m0.604s
sys 0m0.160s
puzzle@somehost:/home/puzzle/habr# time ./test_puzzle

real 0m0.798s
user 0m0.504s
sys 0m0.296s
puzzle@somehost:/home/puzzle/habr#
puzzle@somehost:/home/puzzle/habr# time ./test_borisko

real 0m0.753s
user 0m0.588s
sys 0m0.164s
puzzle@somehost:/home/puzzle/habr# time ./test_borisko

real 0m0.749s
user 0m0.508s
sys 0m0.240s
puzzle@somehost:/home/puzzle/habr# time ./test_borisko

real 0m0.749s
user 0m0.592s
sys 0m0.156s
puzzle@somehost:/home/puzzle/habr# time ./test_puzzle

real 0m0.809s
user 0m0.384s
sys 0m0.420s

Массовые результаты по крайней мере не сильно друг от друга отличаются, а вот разовое исполнение удивляет.

вот ./maketest
#!/bin/bash
rm test_*
g++ -o test_puzzle3 -O3 test.cpp
g++ -o test_borisko3 -O3 -DMY_METHOD test.cpp
g++ -o test_puzzle test.cpp
g++ -o test_borisko -DMY_METHOD test.cpp

echo borisko with -O3
time ./test_borisko3
time ./test_borisko3
time ./test_borisko3
time ./test_borisko3
time ./test_borisko3

echo puzzle with -O3
time ./test_puzzle3
time ./test_puzzle3
time ./test_puzzle3
time ./test_puzzle3
time ./test_puzzle3

echo borisko
time ./test_borisko
time ./test_borisko
time ./test_borisko
time ./test_borisko
time ./test_borisko

echo puzzle
time ./test_puzzle
time ./test_puzzle
time ./test_puzzle
time ./test_puzzle
time ./test_puzzle

(repeat не использовал потому что его нет в sh в котором работает форматирование для time)

Есть идеи? =)
Обычно, хватает интернета. Обычно. И читать приходится с ПК.
А вот недавно произошло интересное событие — захотелось, купил в интернет-магазине.
Но вот что интересно — была бы у меня возможность купить её же в русском издании, но в электронной версии раз в 5 дешевле — купил бы электронную не задумываясь. Честно говоря подмывает отсканировать и отправить автору. Пусть продаёт, у него с сайта (допустим) русскую версию купил с огромным удовольствием. Правда в такой схеме я переводчика обделю честно заработанными деньгами =)

Но тут вот недавно появилась PocketBook602 — сразу читать стало намного удобнее.

А некоторые книжки до сих пор покупаю на «развалах» и барахолках. Ещё иногда знакомые приносят почитать, это правда реже. В книжных магазинах вообще дрова, обзвонил все магазины города, искал кое-что, так ни то что нету, а вообще даже не привезут и заниматься этим не будут. Поэтому пришлось переключаться в интернет-магазин.
промазал с тегами, пардон
e-[b]ink[/b] а не link!
народ, откуда вы там берёте букву l???

(я не со зла, мне правда интересно)
о, супер! подтянулись люди с асмом)
помню задачки про самый короткий на асме hex2dec/dec2hex/etc… :)
фууу…
мало того что вы 256 ячеек памяти (причём int а не byte ;D ) заняли, так ещё и умудрились 20 лишних итераций впихнуть.
выкиньте первый и последний цикл и напишите в теле оставшегося что то вроде if ((*pos>='0')&&(*pos<='9'))
return true;
уже будет логичнее красивее. а вы целый частотный словарь строите, а потом анализируете в нем промежуток 0..9.
хороший вариант. бережливый)
и кроме замены isaplha() -> isdigit() надо char -> current
;)
Дааа, Haskell конечно крут =)

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

Karde, у вас количество перебираемых символов аж 10*length(s) — это очень много.
TheShock у вас офигенная логика, правда, (напомнила [аж гуглить пришлось, уже и забыл фамилию] Погорелова) но потребление памяти наверное не маленькое (хотя зависит от того копируется ли строка при split'e) ну и перебор по объектам… Зато синтаксический сахар очевидный :) я бы даже сказал ванилин — мне понравилось)
Кстати, а mindmap вы в чём делали?
Хорошая, весьма интересная статья. Спасибо.
Интересный топик :)
А знаете чего нет в таком блокноте? (мне тоже нравятся бумажные блокноты но это просто чувство. реалии от них отталкивают в сторону более компьютерных вариантов)
ПОИСКА!!! Индексация красными точками — это конечно супер, да :)
вот только время построения индекса >= времени вычитки всего блокнота :)
а вот когда я беру и ищу в OneNote по базе за несколько лет… я думаю дальше вы меня понимаете.
Раньше, попытка использования похожей парадигмы приводила к необходимости вычитывать весь блокнот когда он заканчивается и переносить важно в новы блокнот/вычеркивать ненужное. жуткое занятие :)
amarao: А при чем тут wget??? Вы что, не знаете что вирусные скрипты на хостинге вполне себе давно проверяют User-Agent?!
просто распихать или оставить сидироваться? :)
просто распихать можно через корзину :) в смысле чистим корзину, удаляем все раздачи с меткой, восстанавливаем из корзины в нужную папку. минусы: может криво работать для папок.
сидироваться — сложнее, сам ищу не ручной метод.
пардон, в таком ключе — понятно :)
Извиняюсь за предыдущий коммент, тогда это косяки установщика от AMD.
Просто в Boot Loader вообще ключи не пишут… вот я и ошибся x)
Согласен! Очень, очень, очень жаль. Вообще блин так вышло что сегодня прочел про закрытие и Courier, и Slate. Ладно еще Courier, но Slate!!! Траур блин.
PS. А какой у вас трансформер?
Согласен! Очень, очень, очень жаль. Вообще блин так вышло что сегодня прочел про закрытие и Courier, и Slate. Ладно еще Courier, но Slate!!! Траур блин.
Ничего подобного. на $1000 дороже — неправда, посмотрите цены на TouchSmart.
И, самое главное, 7ка на HP TouchSmart (даже СТАРОМ который TX2xxx, МОНОтачевый) — отлично управляется пальцами/стилусом. Для тех кому плохо видно — укрупненный dpi. Это насчет старых интерфейсов. А если вам пришлось видеть непонимающих, ставящих на такое железо XP — посочувствуйте им, ибо это в корне неправильный подход.
/usepmtimer НЕЛЬЗЯ убирать.
Вы же сами через одно место прочитали KB 895980

«you must force the AMD computer to use the PM timer by using the /usepmtimer switch.»

Information

Rating
Does not participate
Registered
Activity