No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 527 | 528 | 529 |...| 1361 | 1362 | 1363 || Next»

健康診断

測るたびに血圧が20位前後する.どうすれば落ち着いて測れるのかわからない.血圧測定嫌い.

そういえば人間ドックやってみようと思って予約忘れてるなぁ……

btrfs が良さそう?

バージョニングの入ったファイルシステムがほしいなぁと思って検索してみたら,実は btrfs がそれなりに安定しているようで(RAID56以外).SUSE Linux Enterprise Server 12 からデフォルトっぽいし.

ということで,そのうち btrfs を導入しよう.

だがしかし,copy-on-write という言葉の使い方あってるのか?

Python は遅いのか?(その2)

昨日の続きで,ループ系の計算でも比較してみた.

#include
#include
int main(int argc, char *argv[])
{
	int sum = 0;
	int n = 0, i, j;
	n = atoi(argv[1]);
	for(j = 0; j  < 1000; j++) for(i = 0; i < n; i++) sum += i;
	printf("%d\n", sum);
	return 0;
}
import sys
n=int(sys.argv[1])
s=0
for j in range(0,1000): 
	for i in range(0, n):
		s += i
print(s)

結果:

hogehoge:~/work/pypytest$ gcc -O3 -o sumI sumI.c
hogehoge:~/work/pypytest$ time ./sumI 1000000
882236160
 
real    0m0.255s
user    0m0.252s
sys    0m0.000s
hogehoge:~/work/pypytest$ time pypy sumI.py 1000000
499999500000000
 
real    0m2.105s
user    0m2.088s
sys    0m0.020s

もう一回:

hogehoge:~/work/pypytest$ time ./sumI 1000000
882236160
 
real    0m0.155s
user    0m0.152s
sys    0m0.000s
hogehoge:~/work/pypytest$ time pypy sumI.py 1000000
499999500000000
 
real    0m2.130s
user    0m2.120s
sys    0m0.008s

10数倍くらい? 再起しまくりのフィボナッチと同じ程度.多倍長整数の演算になっている点が響いてるかも?

ということで,double でやった時:

hogehoge:~/work/pypytest$ time ./sum 1000000
5e+14
 
real    0m1.159s
user    0m1.156s
sys    0m0.000s
hogehoge:~/work/pypytest$ time pypy sum.py 1000000
4.999995e+14
 
real    0m3.085s
user    0m3.064s
sys    0m0.024s

こっちは 2~3倍程度.

ということで,Python は C の 3~10倍程度の遅さでしょう.なお,CPU は Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz で.

Python は遅いのか?

フィボナッチ数の計算で C の 70倍遅いとかいうことを聞いて,何となく今までの体感と違かったので手元で測ってみた.PyPy だけど.

プログラム達:

#include
int fib(int n) {
	if(n  <= 1) return 1;
	return fib(n-1)+fib(n-2);
}
int main(int argc, char *argv[])
{
	printf("%d\n", fib(42));
	return 0;
}
def fib(n):
	if n  <= 1:
		return 1
	else:
		return fib(n-1)+fib(n-2)
print(fib(42))

結果:

hogehoge:~/work/pypytest$ gcc -O3 -o fib fib.c
hogehoge:~/work/pypytest$ time ./fib
433494437
 
real    0m0.902s
user    0m0.900s
sys    0m0.000s
hogehoge:~/work/pypytest$ time pypy fib.py
433494437
 
real    0m9.285s
user    0m9.240s
sys    0m0.044s 

もう一回:

hogehoge:~/work/pypytest$ time ./fib
433494437
 
real    0m0.883s
user    0m0.880s
sys    0m0.000s
hogehoge:~/work/pypytest$ time pypy fib.py
433494437
 
real    0m9.429s
user    0m9.372s
sys    0m0.056s 

10倍? 大体このくらいな気がする.

それぞれの --version の結果:

gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
Python 2.7.10 (5.1.2+dfsg-1~16.04, Jun 16 2016, 17:37:42)
[PyPy 5.1.2 with GCC 5.3.1 20160413]

TeX でなやむ

試験の問題と答案用紙の一貫性を保つために,同じ TeX ファイルをモードを変えてコンパイルしたら問題用紙と答案用紙が出てくるようにしたい.

で,○×問題の回答欄と模範解答の生成を問題文中に書いたコマンドで行うようにしているので,答案用紙を生成するときにもそれらのコマンドだけは動かしてほしいという需要があって悩ましい.マクロは動かすけど出てきた文章はバッサリ消したい.comment 環境とかだと本当にバッサリ消えてしまうので困る.

ということでいろいろ試行錯誤.とりあえず box に中身を入れつつその box を最終的に表示しなければ目的が達成できるような気がしたところで時間切れ.だがしかし,あるところからあるところまでをボックスに突っ込むとかいうのはどうやればよいのか分からない.comment 環境がファイルに書き出してるっぽいのでそこの動きを真似ればどうにかなるのかもしれないけれど,どうやってんだかうまく読めない(TeX 力が足りてない).

大暑

聞いただけで暑くなるけれど,ここいらが過ぎれば涼しくなるのかもしれないという期待も…… するだけ無駄な気がする.

早く涼しいところに逃げたい気分.今学期もあと2週間半か.

«Prev || 1 | 2 | 3 |...| 527 | 528 | 529 |...| 1361 | 1362 | 1363 || Next»
Search
Feeds

Page Top