V Amsterdamu probíhá Blender Conference 2025. Videozáznamy přednášek lze zhlédnout na YouTube. V úvodní keynote Ton Roosendaal oznámil, že k 1. lednu 2026 skončí jako chairman a CEO Blender Foundation. Tyto role převezme současný COO Blender Foundation Francesco Siddi.
The Document Foundation, organizace zastřešující projekt LibreOffice a další aktivity, zveřejnila výroční zprávu za rok 2024.
Byla vydána nová stabilní verze 7.6 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 140. Přehled novinek i s náhledy v příspěvku na blogu.
Byla vydána verze 1.90.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
GNUnet (Wikipedie) byl vydán v nové major verzi 0.25.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.
Byla vydána nová major verze 7.0 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Nově je postavena je na Debianu 13 (Trixie) a GNOME 48 (Bengaluru). Další novinky v příslušném seznamu.
Společnost Meta na dvoudenní konferenci Meta Connect 2025 představuje své novinky. První den byly představeny nové AI brýle: Ray-Ban Meta (Gen 2), sportovní Oakley Meta Vanguard a především Meta Ray-Ban Display s integrovaným displejem a EMG náramkem pro ovládání.
Po půl roce vývoje od vydání verze 48 bylo vydáno GNOME 49 s kódovým názvem Brescia (Mastodon). S přehrávačem videí Showtime místo Totemu a prohlížečem dokumentů Papers místo Evince. Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.
Open source softwarový stack ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán ve verzi 7.0.0. Přidána byla podpora AMD Instinct MI355X a MI350X.
Byla vydána nová verze 258 správce systému a služeb systemd (GitHub).
for N in {1..1000}; do A=$(bc -l <<< "scale=9; s(3.14159/$N)") B=$(bc -l <<< "scale=9; c(3.14159/$N)") printf "$A;$B" doneJe to teda dost zjednodušený, aby se v tom dalo vyznat.
Řešení dotazu:
#!/bin/bash # test1.sh for N in {1..5000}; do A=$(bc -l <<< "scale=9; s(3.14159/$N)" &) B=$(bc -l <<< "scale=9; c(3.14159/$N)" &) wait printf "$A;$B\n" donePokud máš více jak 2 jádra, je asi lepší paralelizovat iterace:
#!/bin/bash # test2.sh function wait_for_threads() { while [ $(jobs -rp | wc -l) -ge $threads ]; do sleep $check_interval_secs; done } threads=$(grep processor /proc/cpuinfo | wc -l) check_interval_secs=0.01 for N in {1..5000}; do wait_for_threads ( A=$(bc -l <<< "scale=9; s(3.14159/$N)") B=$(bc -l <<< "scale=9; c(3.14159/$N)") printf "$N $A;$B\n" ) & done | sort -n | cut -d' ' -f2-Režie bude ale obrovská, vzhledem k rychlosti k výpočtu v bc. Takže by to chtělo rozdělit iterace do clusterů, které by byli prováděny paralelně:
#!/bin/bash # test3.sh iters=5000 threads=$(grep processor /proc/cpuinfo | wc -l) cluster_size=$((iters/threads)) last_cluster_size=$((iters-cluster_size*(threads-1))) temp=$(mktemp -d) for C in $(seq $threads); do first_iter=$(( (C-1) * cluster_size + 1 )) if [ $C -lt $threads ]; then last_iter=$(( first_iter + cluster_size -1 )) else last_iter=$(( first_iter + last_cluster_size -1 )) fi ( for N in $(seq $first_iter $last_iter); do A=$(bc -l <<< "scale=9; s(3.14159/$N)") B=$(bc -l <<< "scale=9; c(3.14159/$N)") printf "$A;$B\n" done ) > $temp/$C.list & done wait for C in $(seq $threads); do cat $temp/$C.list rm $temp/$C.list done rmdir $tempBenchmark na i5 (4 core):
$ time ./test0.sh > test0.output # original bez paralelizace real 0m15.776s user 0m0.928s sys 0m1.628s $ time ./test1.sh > test1.output real 0m12.012s user 0m0.608s sys 0m1.588s $ time ./test2.sh > test2.output real 0m11.803s user 0m1.300s sys 0m1.288s $ time ./test3.sh > test3.output real 0m3.278s user 0m0.388s sys 0m0.808s $ for i in 1 2 3; do cmp test0.output test$i.output; echo $?; done 0 0 0
CPU=$(grep processor /proc/cpuinfo | wc -l) for S in $(seq 1 $CPU); do sleep .00$((S-1)) for N in $(seq $S $CPU 1000); do A=$(bc -l <<< "scale=9; s(3.14159/$N)") B=$(bc -l <<< "scale=9; c(3.14159/$N)") printf "$A;$B" done & done wait
/bin/dash
, který by měl být upraven pro dávkové zpracování.
/bin/dash
hodně zjednodušený, aby běhal co nejrychleji a dělal jen to nezbytné, co shell musí umět. Pro daný případ se tedy nehodí.
bc
, Pythonu, Perlu, AWK, Haskellu nebo čemkoli jiném, co je výkonnější než Bash? Přeskakovat při každém průchodu cyklem do bc a zpátky není vůbec efektivní. Navíc se Bash na zpracování čísel vůbec nehodí.
#!/bin/bash bc -l <<EOT scale = 9 for (n = 1; n <= 1000; n++) { print s(3.14159/n), ";", c(3.14159/n), "\n"; } quit EOT
#!/bin/bash bc_call() { bc -l <<EOT scale = 9 for (n = 1; n <= 1000; n++) { print s(3.14159/n), " ", c(3.14159/n), "\n"; } EOT } bc_call | while read A B; do printf "\e[${B};${A}H\e[48;5;161m \e[0m" done
Tiskni
Sdílej: