The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"с бенчмарками :)"
Отправлено Andrey Mitrofanov, 02-Мрт-09 19:56 
>>$ ( tr "\n" "+" <total.bytes |sed 's!+\+!+!g;s!^+\|+$!!g'; echo ) |bc
>>$ tr "\n" "+" <total.bytes |sed 's!+\+!+!g;s!^+\|+$!!g'|xargs|bc
>>$ egrep -o '[0-9]+' <total.bytes |tr "\n" "+" |sed 's!+$!\n!'|bc
>как бы bc не отвалился, хз сколько там чисел

Действительно! %)

>echo `cat total.bytes` | tr " " "+" | bc
>это все хорошо, а если там чисел столько что bc отвалится

$ cat ./x41
#!/bin/bash

n=10
for((i=1;i<7;i++)); do
yes | head -$n |sed 's!y!1000000001!' | (\
/usr/bin/time bc <(echo 'sum=0;while((val=read())!=0){sum+=val}; sum') |\

tr -d "\n"|wc -c

) 2>&1 |tr "\n" " "|awk '{print '"$((${#n}-1))"'" "$NF" "$1" "$3" "$4;exit}'
n="${n}0"
done


#
#done$ ./x41
1 11 0.00user 0:00.00elapsed 0%CPU
2 12 0.00user 0:00.00elapsed 44%CPU
3 13 0.01user 0:00.01elapsed 70%CPU
4 14 0.09user 0:00.10elapsed 85%CPU
5 15 0.88user 0:01.06elapsed 83%CPU
6 16 8.82user 0:10.20elapsed 86%CPU
$ _

Вот такой вариант, соответственно, не подавился суммированием миллиона (десяти лениво было ждать) чисел:

bc <(echo 'sum=0;while((val=read())!=0){sum+=val}; sum')

Из трёх моих первых до таких "высот" не дожил ни один: xargs умер раньше всех, а при передаче сотни тысяч(или типа того) слагаемых в виде строки 1+1+1+,,, bc слишком активно кушал память (типа, всю свободную и начинал "свопиться" = тормозить себя и всю систему).

PS: <(echo '...') - башизм, чтоб сэкономить "лишний" файл.

PPS: Первая колонка "бенчмарка" - log($числа_слагаемых), вторая - "длинна" суммы.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.

На сайте действует частичное премодерирование - после публикации некоторые сообщения от анонимов могут автоматически скрываться ботом. После проверки модератором ошибочно скрытые сообщения раскрываются. Для ускорения раскрытия можно воспользоваться ссылкой "Сообщить модератору", указав в качестве причины обращения "скрыто по ошибке".



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру