abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 0
včera 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 16
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 8
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 2
2.12. 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
2.12. 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
2.12. 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 767 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: rychlost skriptu na debian amd64 vs. gentoo

30.4.2007 14:01 hajoucha | skóre: 21
rychlost skriptu na debian amd64 vs. gentoo
Přečteno: 209×

Dobrý den

mám následující skript:

#!/bin/bash

FILE=`basename $1 .out`

grep "TEMP_HOT" $1 | awk '{print $1, $3}' > $FILE.temp
grep "TEMP_COLD" $1 | awk '{print $1, $3}' > $FILE.cold
grep "CURRENT" $1 | awk '{print $1, $3}' > $FILE.curr
sed '/Time/!d; /???/d;' $1 |cut -d : -f 2- |sed 's/:/ /g' |awk '{print $1, $3, $5, $7}' |sort -n |uniq > $FILE.fin
echo "hotovo sefe!"

exit 0
ten pouštím na soubor, který má cca 200MiB. Na stanici s debianem amd64 (2GiB RAM) s procesorem :
model name      : AMD Athlon(tm) 64 X2 Dual Core Processor 5600+
stepping        : 3
cpu MHz         : 2812.829
cache size      : 1024 KB
trvá

real    1m12.978s
user    1m23.369s
sys     0m1.752s

kdežto na stanici s gentoo (zrejme 32bit, 1GiB RAM) s procesorem
model name      : AMD Athlon(tm) 64 Processor 3500+
stepping        : 0
cpu MHz         : 2203.408
cache size      : 512 KB

trvá:
real    0m26.438s
user    0m23.921s
sys     0m1.736s

Ani jeden stroj není jinými procesy nijak zatížen. Liší se pouze verze "sort" a "uniq". Gentoo má 6.4 vs. debianí 5.97. Ale i přesto... vysvětluje to tak závratný rozdíl v časech při takovém rozdílu hw? Zdrojová data jsou k mání třeba zde: data

Pozn: ten skript odpovídá mým skromným znalostem..., takže případná zlepšení jsou samozřejmě vítána :)

Odpovědi

30.4.2007 14:32 Ash
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo
Zásadní rozdíl v rychlosti u sort/uniq by mohlo způsobovat UTF8. LANG=C sort to přepnete do ascii. Není to ten důvod?
30.4.2007 14:43 hajoucha | skóre: 21
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo
...ano, tohle docela pomohlo, leč stále (na debianu):

$ time ./rozhod.sh 2.5Anew.out
hotovo sefe!

real    0m39.779s
user    0m50.043s
sys     0m1.620s


Na gentoo je výsledek teměř totožný jako předtím:


$ time ./rozhod.sh 2.5Anew.out
hotovo sefe!

real    0m25.424s
user    0m23.621s
sys     0m1.672s

30.4.2007 16:07 Ash
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo
Tak to asi bude tím... Použil jste to pro všechny ty operace? Tedy i pro sed, awk... je to obecně problém multibyte kódování, protože při čtení každého znaku ze souboru se volá jakási mb_funkce() což v současné době způsobuje značné zdržení. Takže to ovlivnňuje všechny nástroje, grep atd.
1.5.2007 08:52 hajoucha | skóre: 21
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo
..ouha, tak ted už ano:
real    0m26.678s
user    0m35.222s
sys     0m1.716s

Přestože jsou nyní výsledky srovnatelné, čekal jsem, že na debianu půjde skript mnohem rychleji, vzhledem k dvojnásobku paměti, dvojímu jádru a ješte rychlejšimu taktování. No nic, hlavní zádrhel je vyřešen, za což moc děkuji. K dalšímu zrychlení bude zřejmě potřeba se zamyslet nad strukturou toho skriptu jako takového... :)

1.5.2007 09:20 Michal
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo
Dvojjadro tomu nijak nepomuze, nemas to napsane multithreadove ;-) A vetsi pamet take ne. Kam se ztratil prirustek 20% narustu taktu? Dost mozna, ze v 64bitech. Ono gcc generuje nekdy naprosto uzasne prekvapujici kod, kde si clovek rika "takhle by me to v zivote ani nenapadlo napsat" ;-)
1.5.2007 09:51 hajoucha | skóre: 21
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo

ano, to je pravda. Dvojjádro není žádný argument, nechal jsem se unést. Ovšem nerozumím té paměti.... je tím myšleno, že pokud se celý soubor vejde do RAM, tak už je to pak jedno? Jo, tak to bych taky bral.

No, když na ten skript tak koukám, tak mi přijde, že nejnáročnější bude sort. Zajímalo by mě, zdali třídí rovnou to co leze z roury, nebo jestli počká, až dostane všechno a pak to roztřídí naráz? Nebo jak to vlastně dělá?

Ze souboru potřebuji nejprve vybrat řádky obsahující slova TEMP_COLD, TEMP_HOT a CURR. Ŕádky s jednotlivými slovy chci uložit do zvláštních souborů. Nelze to udělat nějak lépe, než, že ten soubor projdu 3x za sebou? Jinými slovy, nelze místo prvních tří grepů pustit grep jenom jeden a říci mu, aby dával příslušné řádky do třech různých souborů? Počítám, že tohle přímo nepůjde, ale myšlenka je zřejmá...Nebo ještě jinak, když už prvním grepem najdu příslušné datové řádky, rád bych je alespoň zároveň vyhodil ze souboru, abych je nemusel příště procházet zase...To by šlo?

1.5.2007 10:28 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo
je tím myšleno, že pokud se celý soubor vejde do RAM, tak už je to pak jedno?

Pokud na realizaci úlohy potřebujete určité množství paměti a toto množství máte k dispozici, pak je celkem jedno, jestli máte ještě nějakou navíc. Množství paměti se na rychlosti může projevit pouze v případě, že je buď paměti nedostatek a je nutno swapovat, nebo je při nedostatku paměti program nucen použít paměťově úspornější, ale pomalejší algoritmus.

Fuky avatar 1.5.2007 10:36 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo

Prvních tří grepů se můžeš zbavit např. takto:

#!/bin/bash

echo -e "AAA nic TRI\nBBB nic TRI\nCCC nic TRI" |\
gawk '
  /AAA/ { print $1, $3 > "file.a" }
  /BBB/ { print $1, $3 > "file.b" }
  /CCC/ { print $1, $3 > "file.c" }
'

1.5.2007 11:09 hajoucha | skóre: 21
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo
zdá se, že to nebyl dobrý nápad:
real    0m58.647s
user    0m59.440s
sys     0m1.216s


#!/bin/bash

FILE=`basename $1 .out`

LANG=C gawk '
  /TEMP_HOT/ { print $1, $3 > "file.temp"}
  /TEMP_COLD/ { print $1, $3 > "file.cold" }
  /CURRENT/ { print $1, $3 > "file.curr" }
' $1
LANG=C sed '/Time/!d; /???/d; s/:/ /g' $1 | LANG=C awk '{print $3, $5, $7, $9}' |LANG=C sort -n |LANG=C uniq > $FILE.fin
echo "hotovo sefe!"

exit 0

Fuky avatar 1.5.2007 15:05 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo

Zkoušel jsem:

#!/bin/bash

if [ "$2" == "gawk" ]; then
  gawk '
    /AAA/ { print $1, $3 > "gawk.a"; next }
    /BBB/ { print $1, $3 > "gawk.b"; next }
    /CCC/ { print $1, $3 > "gawk.c"; next }
  ' $1
elif [ "$2" == "grep" ]; then
  grep "AAA" $1 |gawk '{ print $1, $3 }' > grep.a
  grep "BBB" $1 |gawk '{ print $1, $3 }' > grep.b
  grep "CCC" $1 |gawk '{ print $1, $3 }' > grep.c
elif [ "$2" == "sed" ]; then
  grep "AAA" $1 |sed -n 's/\([^ ]\+\) \+\([^ ]\+\) \+\([^ ]\+\)/\1 \3/p' > sed.a
  grep "BBB" $1 |sed -n 's/\([^ ]\+\) \+\([^ ]\+\) \+\([^ ]\+\)/\1 \3/p' > sed.b
  grep "CCC" $1 |sed -n 's/\([^ ]\+\) \+\([^ ]\+\) \+\([^ ]\+\)/\1 \3/p' > sed.c
elif [ "$2" == "bash" ]; then
  grep "AAA" $1 |while read c1 c2 c3; do echo $c1 $c3; done > bash.a
  grep "BBB" $1 |while read c1 c2 c3; do echo $c1 $c3; done > bash.b
  grep "CCC" $1 |while read c1 c2 c3; do echo $c1 $c3; done > bash.c
elif [ "$2" == "c" ]; then
  grep "AAA" $1 |./column > c.a
  grep "BBB" $1 |./column > c.b
  grep "CCC" $1 |./column > c.c
fi

Nejvíce zdržuje vypsání prvního a třetího sloupce. Rychlejší způsob než C jsem nenašel.

column.c:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define BUFFER_MAX 1024

int main(void)
{
  int i;
  char buffer[BUFFER_MAX];
  char *p_buffer;
  char *column;

  while (fgets(buffer, BUFFER_MAX, stdin) != NULL) {
    p_buffer = buffer;

    for (i = 0; i < 3; ++i) {
      if (p_buffer == NULL) {
        continue;
      }

      while (*p_buffer == ' ') {
        ++p_buffer;
      }

      if ((column = strsep(&p_buffer, " ")) == NULL) {
        continue;
      }

      switch (i) {
        case 0: printf("%s", column);  break;
        case 2: printf(" %s", column); break;
        default:                       break;
      }
    }
  }

  return 0;
}

Fuky avatar 1.5.2007 11:04 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo

Jestli Tě zajímá jak pracuje sort, máš k dispozici jeho zdrojáky ;-) Všimni si, že si vytváří v /tmp pomocné soubory (ls -lh /tmp/sort*), takže když ho použiješ na velký soubor může pomalé RW disku znatelně zpomalit jeho běh, což může být další zásadní rozdíl mezi sestavami, na kterých jsi prováděl testy.

1.5.2007 11:15 hajoucha | skóre: 21
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo
:) zdrojáky si nechávám jako opravdu až tu nejzazší možnost, hlavně proto, že nejsem v C vůbec zběhlý a tak se obávám, že by mi to zabralo příliš mnoho casu

Ovšem s těmi disky to bude skvělá trefa. Sestava s gentoo má zřejmě disky o něco rychlejší.
1.5.2007 09:50 Michal
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo
<sarkasmus>Predne bych ti chtel napsat co to jsou komprimacni programy. Kdyz nimi prozenes textovy soubor (obzvlaste s takovym mnozstim opakujicich se casti jako tento) tak dokazou zmensit jejich objem na 1/25 a lidi pak stahujou mnohem mensi mnozstvi dat. U sebe to pak dekomrimuji a ziskaji puvodni soubor. Opravdu. Nekecam! viz napr. man bzip2<sarkasmus>

Pro srovnani vysledky z gentoo 64bit, Core 2 Duo E6600 @ 3.5GHz
real    0m10.949s
user    0m13.385s
sys     0m1.212s
real<(user+sys) takze asi preci jen to je napsano mutithreadove.
1.5.2007 10:05 hajoucha | skóre: 21
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo
už jsem to opravil... sbalene to ma nejakych 8MiB. Člověk holt nemyslí na všechno :)

sbalena data
1.5.2007 10:06 hajoucha | skóre: 21
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo
už jsem to opravil... sbalene to ma nejakych 8MiB. Člověk holt nemyslí na všechno :)

sbalena data
1.5.2007 10:08 hajoucha | skóre: 21
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo
hrome... překlep! Platí až ten druhý link.
1.5.2007 10:32 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: rychlost skriptu na debian amd64 vs. gentoo
Na to, abyste využil více procesorů (jader), nepotřebujete multithreadovou aplikaci. Když propojíte dva příkazy (náročné na procesor) rourou a nic jiného v systému procesor(y) zatěžovat nebude, poběží každý na jednom procesoru a na dvouprocesorovém systému to bude rychlejší i bez multithreadových aplikací. Schválně se můžete podívat do zdrojáků použitých utilit, zda někde volají pthread_create().

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.