5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【科学技術計算】C言語とFortran どっちがいい?

570 :名無しさん@5周年:2005/11/18(金) 03:25:31
>>562
C++のようなオブジェクト指向言語じゃなくて、
C++を使ってハードウェア条件を考慮せずにメモリアクセスを無駄に増加させる場合という意味だろ?
オブジェクト指向は決して現状のハードウェアにとって効率のいいアプローチじゃないのは間違いないが、
C++を使って限りなくCに近く記述すれば、Fortranの最適化に比べれば多少劣ることはあってもほとんど問題ないはずだ。
Cのポインタの問題(C++にはそこに書いてるのは別な問題があるようだけど)にしろ、もしポインタを使って遅くなるような処理系なら
使わない選択肢だってあるわけよ。配列の行、列のアクセス順と0から始まるインデックス以外はほとんどFortran風にかけるはずだ。
あと、
C++にしても、例えば Matrix A,B,C,D;で
A= Inv(B) * C +D;
と書いて、メモリコピーに時間がとられているようなら、別途高速化のためにC風の2項演算用の関数をしておけばいい。
C++だとそういう選択の自由だってあるし、テンプレートを使えばループのアンロールだってやってくれる。
テンプレート機能のない他の言語だとこうはいかない。処理が短くてループ処理のオーバーヘッドを無視できない場合は是非使いたい機能だろ?
限りなくCに近いコードで適所にテンプレートによるループのアンロール機能をすれば、普通にCで書くより速いと思うけど。
それと、そこに書いてるExpression templateは和や積程度ならいいけど、逆行列のように行列のひとつの成分の算出に全行列成分が絡んでくるような場合は、
ほとんどやる意味ないと思うわ。Expression templateで逆行列作った人いる?もしいたら感想を聞きたいんだけど。

210 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)