C++上級者が集まるス ..
[2ch|▼Menu]
666:デフォルトの名無しさん
07/02/06 02:15:36
>>664
C++の話題じゃないから、662を読んで分からないなら Windows 板へ池

667:デフォルトの名無しさん
07/02/06 06:56:43
>>664
処理速度の速いほうがCPU使用率も高くなんのはあたりまえだろ、どっか逝け。

668:デフォルトの名無しさん
07/02/06 08:20:29
俺も大体そう思うな

プロファイラがあってもデバッグ版のCPU使用率が低い理由はわからないと思う。
これに関しては私には判りません。
デバッグモードでは何か特殊な待ちがあるんだろか。

たとえばwaveOutWriteなら複数のバッファを渡せるので
音飛ぶ可能性は著しく低く、
バッファが終わるころにメッセージ通知が来るから
それまで何もしないのでCPU使用率を著しく下げることも出来るはず。

ノベルゲームの経験ないから推測だが
ノベルゲームで絶えず処理している状況が存在する理由がわからない。

669:デフォルトの名無しさん
07/02/06 11:21:53
デバッグ版ではシステムコールの呼び出しが
増えてたりするからじゃないのん?


670:デフォルトの名無しさん
07/02/06 22:06:52
c++のリファクタリングツールは
VisualStudioなら
ref++
Refactor! Pro

emacsで使えるツールはないの?

671:デフォルトの名無しさん
07/02/06 22:11:02
URLリンク(www.wholetomato.com)

リファクタリングツールいろいろ

672:デフォルトの名無しさん
07/02/06 22:27:03
URLリンク(xref-tech.com)
emacsリファクタリングツールみつけた
試したいけどemacsでc++コンパイルする環境整えるの大変だ

673:デフォルトの名無しさん
07/02/07 23:49:30
すみません。これで最後にします。

>>668
サウンドライブラリとして、OpenALを使っているので、
空きバッファがあるかどうか
常に監視する必要があるのです。

確かにwaveOutならその必要はありませんね。

>>669
システムコールかもしれません。


一応テストとして、
・適当な処理+Sleep(0)を繰り返すスレッド
・適当な処理+Sleep(10)を繰り返すスレッド
の二つを作って実行させたのですが
デバッグモード、リリースモードの両方でCPU使用率は100%でした。
(当然か。。。)

件のアプリでは、さらに多くのスレッドといろいろな処理が付加されているので、
どこかになにがしかの待ちが入っているんだと思います。
(共有リソース待ちや、IO待ち?)
感覚としては、スレッド間のリソース待ちが原因では無いかと思いました。
(調べてみるとミキシングスレッドとサウンドデータ供給スレッドが別でした^^)
ちょっとこれ以上は分から無いのですが、
他にやることもあるのでこの件はこれで終わりにしたいと思います。

それでは、スレ汚し失礼しました。

674:デフォルトの名無しさん
07/02/10 12:20:00
実行中にブレーク掛けてみて、どの処理が走ってるかみてみたら。
何回かやれば時間食ってる部分が解るだろ。

675:デフォルトの名無しさん
07/02/15 00:33:53
>>674
遅れてすみません。
ブレーク掛けてみたのですが、
意味の分からない結果になりました。
なんか、OpenALのバグのような気がします。。。

原因が分かったら報告します。

676:デフォルトの名無しさん
07/02/15 09:20:44
ここは上級者が集まるスレです。上級者に質問するスレではありません。

677:デフォルトの名無しさん
07/02/16 12:34:00
集まって何すんの?

678:デフォルトの名無しさん
07/02/16 12:34:37
書き込んだり、書き込みを読んだりするに決まってるじゃん。

679:デフォルトの名無しさん
07/02/16 13:18:05
書き込んだり、書き込みを読んだりして何すんの?

680:デフォルトの名無しさん
07/02/16 14:53:13
できることとか、やりたいこと。

681:デフォルトの名無しさん
07/03/02 19:46:02
夏時間まで考慮して、タイムゾーンを取得する方法を教えてください。


682:デフォルトの名無しさん
07/03/27 02:43:43
boolは何故1バイトも消費するのですか?

683:デフォルトの名無しさん
07/03/27 05:01:28
>>682
1バイトとは限らんぞ。処理系依存だ。
VCではint型にダウンキャストされるんじゃなかったっけ?
#かなり昔に仕様書らしきもので読んだ気が。

仮に>>682が使用している環境でboolが1バイト使うとして話を進める。
>>682は1ビットで十分だっていいたいんだろうけど、
メモリの最小管理単位が1バイトだから、最低でも1バイト使わないとだめ。
C言語で言うビットフィールドを使って、ビット単位で管理するのもありだけど
(そうすれば、1バイトで8個のboolを管理できるよな)、それだと管理のための
メモリが必要になるし、速度面で効率的じゃなくなる。

だから、bool型は1ビットじゃないんだ。
もっとも、処理系によってはビット単位で管理してるのもあるかもしれんが。

684:・∀・)っ-○◎●
07/03/27 05:05:29
ダウンキャストっていうのかそれ
VC++の最近の実装(っていうかただのtypedef)ではBOOL=charだったような

685:デフォルトの名無しさん
07/03/27 05:06:51
>>683
今VC++でsizeof(bool)の値を見たら1だった。

俺はbool型変数はクラスメンバぐらいでしか使わないから、
たとえ1ビットだとしてもアラインメントの影響で恩恵にあずかれないな。

686:・∀・)っ-○◎●
07/03/27 05:18:54
vector<bool>とか使うと恩恵があるかも

687:デフォルトの名無しさん
07/03/27 06:31:31
boolをvectorなんかに入れて一体何に使えというんだ

688:・∀・)っ-○◎●
07/03/27 06:34:33
何だ知らないのか

URLリンク(www.scl.kyoto-u.ac.jp)

689:デフォルトの名無しさん
07/03/27 06:50:59
>>688
そういえばそんなもんもあったな。

690:デフォルトの名無しさん
07/03/27 07:13:24
>684のすべてが意味不明

691:デフォルトの名無しさん
07/03/27 22:04:00
>>683
速度・効率だけでなく、ビット単位ではポインタとしてメモリアドレスが使えない。

ワードマシンでのchar*みたいにコンパイラが頑張る手もあるが、
bool*だけでなく必然的にvoid*もbool*に合わせなければならず、
void*とbool*だけ他のポインタと異なる大きさになってしまう。
無論規格上は問題ないが、実際問題void*の大きさがほかと異なるなんてやっていられないだろ。

692:デフォルトの名無しさん
07/03/27 23:05:56
関数へのポインタとデータへのポインタの大きさが違うなんて
昔は当たり前だったから、なんてことない。

693:デフォルトの名無しさん
07/03/27 23:14:25
>691
boolを1bitにするなら、sizeof(bool)をどうする気?

694:デフォルトの名無しさん
07/03/27 23:18:46
>>693
1/8

usodakara

695:デフォルトの名無しさん
07/03/27 23:21:03
>>693
それ忘れていたorz

>>684
Windows APIでは、typedef int BOOL; typedef char BOOLEAN;
しかしboolとは関係ない。

696:デフォルトの名無しさん
07/03/27 23:33:40
> typedef int BOOL; typedef char BOOLEAN;

わけわからん >>MS

ATL::CComPtr::operator&()もわけわからんかった。
凶悪。

697:・∀・)っ-○◎●
07/03/28 01:08:39
>>695
そこは固定じゃない。
なんのtypedefかはSDKのバージョンによってもしょっちゅう変わる。

まあ固定長ビット配列ならstd::bitsetなんかが一番効率いいかな。
1ワードの中に複数要素が詰め込めると何かと便利。

698:デフォルトの名無しさん
07/03/28 01:20:35
URLリンク(msdn2.microsoft.com)
実際にヘッダでどうなっているかはともかく、文書化されていることは当てにしていいと思う。

ところでBOOLEANはBYTEだったね、すまん。

699:デフォルトの名無しさん
07/03/28 02:12:43
>>691
void* と char* は同じ内部表現である必要がある。 (ISO C++ 3.9.2.4)
そのほかメモリモデルやオブジェクトモデルの定義からも char より
小さい型は存在し得ないと言える。

700:デフォルトの名無しさん
07/03/28 02:12:52
BOOL
Boolean variable (should be TRUE or FALSE).

shouldって便利な言葉だな

701:・∀・)っ-○◎●
07/03/28 02:30:37
>>698
msdn2〜はVS2005のドキュメント

702:デフォルトの名無しさん
07/03/28 02:38:09
>>701
団子ちゃん、流れとは全然関係ない質問があるんじゃが、
団子ちゃんがC++上級者だと家庭して、団子ちゃんは Boost を
1. あー、ごっつい靴だろ?
2. たまに使う。
3. よく使う。
4. もうあなたなしじゃ生きられないの!
5. あー、アレのほげほげは俺がコントリビュートしてんだよ。
の、どれ?

703:702
07/03/28 02:39:35
ちなみに俺は、1 だが、それでも自分を C++ 上級者だと思ってる。

704:・∀・)っ-○◎●
07/03/28 02:44:25
2かな
ふだんはATL/WTL+STLあと.NET

regexとrandom::mt19937rは便利だね
あとsandboxにあがってたfixed_arrayが便利だから改造して使ってる

705:デフォルトの名無しさん
07/03/28 03:06:41
.NEET 使ってんだ。

706:デフォルトの名無しさん
07/03/28 07:26:32
>697
おいおい。BOOLの実体がint以外だったことがあるってーの?
WIN16の頃の話じゃねーだろーな。

707:デフォルトの名無しさん
07/03/28 09:17:07
>>701
msdn.microsoft.comの時代から698の文書は存在した。
今は英語版のMSDNライブラリオンラインはあちこちmsdn2への転送になっている。

708:デフォルトの名無しさん
07/03/28 15:45:05
bool型はC++仕様書ではintと同じバイト数。
でも大手の実装するコンパイラは大抵1バイトしか割り当てないのが普通。
さて、酒飲んで寝るか。もう目が覚めませんように。

709:デフォルトの名無しさん
07/03/28 16:11:38
>>708
そんな規定はどこにも無い。

710:デフォルトの名無しさん
07/03/28 16:50:25
>>708
嘘吐きはそのまま永眠してなさい。

711:デフォルトの名無しさん
07/03/28 18:29:02
1に書いてある内容とまるで裏腹なスレの内容
なんて皮肉だ

712:デフォルトの名無しさん
07/03/28 23:37:58
> 我こそはC++プロフェッショナルだという方の書き込みをお待ちしております。

こんなこと書くから、自分でプロだと「思い込んでる奴」ばっかりになるんだよ。

713:デフォルトの名無しさん
07/03/28 23:42:49
>>711-712
ここはネタスレなのにお前らときたら…

714:デフォルトの名無しさん
07/03/29 16:37:54
>>711-712のような人たちのためのホイホイスレでもあるからいいじゃないか。

715:デフォルトの名無しさん
07/03/29 18:52:05
>>711-712は本気で自分がC++上級者だと思って
このスレに降臨なされたのですか

716:デフォルトの名無しさん
07/03/30 11:42:32
スレタイに騙されて覗いてみたら期待してたのと違ったんで
怒りに任せて書き込んでみたんでしょう。

スレ勃てから2年半もたってノコノコやってきて今更な事を書く人ってのは
そういうもんです。

717:デフォルトの名無しさん
07/03/30 14:17:33
>>714-716
ここはネタスレなのにお前らときたら…

718:デフォルトの名無しさん
07/03/30 14:26:29
もうちょっとためてから反復しないとネタとして面白くないです。

719:デフォルトの名無しさん
07/03/30 21:56:50
団子ちゃん以外の人は >>702 で言うと何番?

720:デフォルトの名無しさん
07/03/30 22:02:40
特定の部分なら3だが全般的には2だな

721:・∀・)っ-○◎●
07/03/31 00:22:23
全部使ってる奴がいたらそれはそれで気持ち悪いぞ

MPLとかSpiritとか、いいかげんにしる

722:デフォルトの名無しさん
07/03/31 06:16:03
俺4。上級者じゃないけど。MPLとかは流石に可読性的に使えないがな。

723:デフォルトの名無しさん
07/03/31 17:01:03
MPLとPreprocessorとSpiritとPhoenixとXpressiveと
LambdaとuBLASとgraphとfilesystemを全部使うアプリを
testでテストするやつこそが4だな。

724:デフォルトの名無しさん
07/03/31 22:33:03
どういう処理をしようとして全部必要になるんだろうか……

725:デフォルトの名無しさん
07/04/04 13:19:51
環境非依存で、ミリ秒単位でsleepさせる方法はありませんか?

726:デフォルトの名無しさん
07/04/04 14:16:24
>>726
ない。

特定のCPU等に依存していいならなんらかの方法があるだろうが、
どのみちほとんどマシン語のコードになる。

727:デフォルトの名無しさん
07/04/04 14:49:56
>>727
ですよね。

728:デフォルトの名無しさん
07/04/04 19:01:43
>>727
大丈夫か

729:デフォルトの名無しさん
07/04/04 20:00:16
>>729
注:私の有意義な発言に対し自分の理解不足を棚に上げ煽り、1行レス
で返す方が多いようですが、そのような方はスレの皆様を混乱させるだけでなく
スレの雰囲気を崩しかねないのでお黙り下さい
また質問者は回答者に知識を披露する場を与える貴重な存在なので、
質問者を見下した回答、あまりにも儀礼を欠いた回答も厳重に禁止いたします。
忙しい中、少ない時間の合間を縫って質問しに来てるわけですので、
その辺ご承知下さい。なお、当方が質問に対して有意義な答えであると
判断した方には評価いたしますので各自よく調べ、よく考え正確な回答をするように。

730:デフォルトの名無しさん
07/04/04 23:31:15
まずい餌だな。3点

731:デフォルトの名無しさん
07/04/07 08:44:22
>>731
死ねよクズが

732:デフォルトの名無しさん
07/04/07 16:54:40
>>733
死ねカス

733:デフォルトの名無しさん
07/04/07 16:55:12
>>732
お前が死ねカス

734:デフォルトの名無しさん
07/04/07 17:02:47
729 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん

735:デフォルトの名無しさん
07/04/07 18:59:56
>>731-733
ありきたりのパターン。2点

736:デフォルトの名無しさん
07/04/07 22:37:50
かといってこんなことに新鮮味を追求されるのもアレだな

737:デフォルトの名無しさん
07/04/10 18:46:19
絶対値を求める関数が他の言語では一つしかないのにCではabsとfabsの二つが存在する理由を教えてください。

738:デフォルトの名無しさん
07/04/10 19:16:00
その質問をこのスレでする理由を教えてください。

739:デフォルトの名無しさん
07/04/10 22:43:33
>>737
> 絶対値を求める関数が他の言語では一つしかない

Fortran なんか4個もあるぞ。(w

iabs(整数) => 整数
abs(実数) => 実数
dabs(倍精度) => 倍精度,
cabs(複素数) => 実数

740:デフォルトの名無しさん
07/04/10 22:56:30
CだってC89の時点でabs(int), labs(long), fabs(double)と3個。
後(C95か?)にfabsf(float), fabsl(long double)が加わり5個。
C99ではllabs(long long), imaxabs(intmax_t),
cabs(double complex), cabsf(float complex), cabsl(long double complex)と10個。

勿論C++では、(C++にある型なら)absで多重定義がなされている。

741:デフォルトの名無しさん
07/04/11 00:27:51
ここまでの話を総合すると、rubyが一番スマートだな。

742:デフォルトの名無しさん
07/04/11 21:36:45
>>741
というと ruby は絶対値をマイナス値で返す nabs 一個のみとかそんな感じ?

743:デフォルトの名無しさん
07/04/11 23:27:22
オーバーロードしてるから見た目上一個やん

744:デフォルトの名無しさん
07/04/12 04:39:04
>>743
マイナスの最大値でオーバーフローするものしかないってこと?

# 戻り値が unsigned なら大丈夫だけど。

745:デフォルトの名無しさん
07/04/12 11:07:54
>>737
実行速度を上げるため

746:デフォルトの名無しさん
07/04/12 22:35:50
>>744-745
釣りですか、ご苦労様です。

747:デフォルトの名無しさん
07/04/12 22:59:30
直観が「突っ込み所だ」と告げたはいいが、スレタイがスレタイだけに
具体的に突っ込んでボロ出す羽目になったらどうしようってのがちょっぴり不安で、
結果こんな感じに落ち着きました、という感じのレスだな。

748:デフォルトの名無しさん
07/04/13 23:38:12
>>747
>>747

749:デフォルトの名無しさん
07/04/14 02:31:47
たとえば負数が1の補数な処理系では、
INT_MINを放り込んでも、オーバーフローしないよ。

750:デフォルトの名無しさん
07/04/14 04:29:20
そうだね。帰っていいよ。

751:デフォルトの名無しさん
07/04/14 09:06:05
馬鹿じゃないの?

752:デフォルトの名無しさん
07/04/14 09:08:20
泣くなよ

753:デフォルトの名無しさん
07/04/22 08:47:09
>>688
1998年w

754:デフォルトの名無しさん
07/05/18 18:12:10
float x=10.0;

exp(x)
とすると、expはfloat型に対応した関数が呼び出されますが、
exp(10.0)
とした場合、double型に対応した関数が呼び出されると考えてよいのでしょうか?

755:デフォルトの名無しさん
07/05/18 20:30:24
ワラタ

756:デフォルトの名無しさん
07/05/18 21:39:41
>>754
そうだよ
ちなみにexp(10.0f)とすればfloat版を選べる

757:デフォルトの名無しさん
07/05/21 02:39:50
まさかとは思ったが

ここも隔離スレだったか


758:デフォルトの名無しさん
07/05/21 02:45:16
>>757
全然そんなことないから、ここから出て行かないでね♪

759:デフォルトの名無しさん
07/05/25 03:24:06
>>21
いまさらながら
const string 上級者="俺";
のが上級者っぽいな。

760:デフォルトの名無しさん
07/07/01 15:07:07
class 上級者;
typedef 俺 上級者;

761:デフォルトの名無しさん
07/07/01 16:31:11
>>760
#define 上級者 ナルシスト
をお忘れですよ。

762:デフォルトの名無しさん
07/07/05 17:48:21
大抵のコンパイラでC99はスイッチをつけないとコンパイルできないのは何故?


763:デフォルトの名無しさん
07/07/05 18:45:42
C++のコンパイラ?
C99がC++に取り込まれるのはC++0x(たぶん09)からだよ。

764:デフォルトの名無しさん
07/07/05 20:03:32
C++かアセンブリ言語どっちが難しいですか?

765:デフォルトの名無しさん
07/07/05 20:43:18
C++

766:デフォルトの名無しさん
07/07/05 21:05:20
アセンブリは面倒なだけで難しいのとはまた違う
技術書を読む大変さはあるけどなー

767:デフォルトの名無しさん
07/07/06 21:10:24
マクロアセンブラならまあいける

本当にただのニーモニック→機械語変換だとアドレスの管理を全部自分でやらないといけないから死ねる

768:デフォルトの名無しさん
07/07/07 00:21:56
それアセンブラって言わないと思うが...

769:デフォルトの名無しさん
07/07/07 00:56:53
DEBUG.EXEだな
あれのアセンブラ機能は貧弱だったな
それでもcom形式ぐらいならなんとか書けちゃったりするが

770:デフォルトの名無しさん
07/07/07 12:02:34
FEDCBA98

771:デフォルトの名無しさん
07/07/11 12:32:08
何の16進かと思ってググったらゲーム改造かよ。
何にしろバイナリ書き換えは趣味の域でなきゃやりたくないな。

772:デフォルトの名無しさん
07/07/22 20:44:27
C++上級者(笑)

773:デフォルトの名無しさん
07/07/22 20:52:46
三(笑)

                ( *´ω`)ムシャムシャ
                つi'"':
                 `、:_i'
| ┌┐
│ ││             ││   若干食べられてしまったが
| ││             ││   >>772はC++より安く見えることがわかる
| ││             ││
└──────
 C++上級者(笑)      >>772

774:デフォルトの名無しさん
07/09/24 07:47:59
defineの代わりにconstを使うよう推奨されているのに、コンパイラのソースを見ると
大量にdefineが使われているのはなぜ???

775:デフォルトの名無しさん
07/09/24 09:54:14
もともとCで書かれていたか、
実はCとしてコンパイルするようになっているか、
書いた人間がconst推奨を知らなかったか。

776:デフォルトの名無しさん
07/09/24 12:36:23
Cと共用なんだろ。
何を悩む必要がある

777:デフォルトの名無しさん
07/09/24 19:44:30
>>774
錯覚が目

778:デフォルトの名無しさん
07/09/28 00:10:08
>>774
システムのベンダとユーザは事情も、従うべきルールも違う。
システムヘッダの真似してアンダースコアで始まる名前を使うような人大杉。

引数に渡す定数を参照させるだけのために、
オブジェクトのリンクを強要するDLLなんかありえないし、
他の言語とリンクさせるときや、バイナリ互換性が問題なら、
定数の具体的な値をはっきり公開するしかない。

それに、Cでは配列サイズにconst整数を使えない。


779:デフォルトの名無しさん
07/09/28 01:31:32
constって言ったって、ヘッダで初期化子付きの定義を与えるんだから、
DLLなんて関係ないけど、ほかは合っているや。

780:デフォルトの名無しさん
07/09/28 03:04:35
>>constって言ったって、ヘッダで初期化子付きの定義を与えるんだから、
プレーンCモードでコンパイルされたときに実体が増殖し放題で
リンクエラーになるからDLLベンダがそれをやったら配慮不足だ。
よく分かってないハード屋寄りのユーザとかが目を回すからな。

このスレ的にはC++コンパイラだとそれができるっていうのは大事だけどな。


781:デフォルトの名無しさん
07/09/28 10:10:17


782:デフォルトの名無しさん
07/10/11 01:31:51
const だと余計にメモリ消費するからヤなんじゃないの?

783:デフォルトの名無しさん
07/10/12 23:21:57
staticにすらば、アドレス参照とかしなければ実体は取り除かれるんじゃないの?
コンパイラの能力にによるだろうけど

784:デフォルトの名無しさん
07/10/13 01:50:27
>>783
C++ では const つけた名前空間スコープのオブジェクトはデフォルトで
内部リンケージになる。 static は要らない。

785:デフォルトの名無しさん
07/10/20 22:13:19
static const volatile unsigned long long int X;

は意味無しか

786:デフォルトの名無しさん
07/11/01 04:00:31
インテルコンパイラでループをSSEで計算させようとしているのですが、
コンパイル時に
loop was not vectorized: dereference too complex
というレポートを返してきます。
これは具体的にはどのような問題があるといっているのでしょうか?

787:デフォルトの名無しさん
07/11/01 17:32:37
>>786
そのままじゃね?
逆参照が複雑過ぎてベクトル化出来なかったお
意味は、その箇所にSSE使えなかったと

ポインタポインタポインタ使ったとか間接的なイテレータ使ったとか?コード見てないからなんとも言えないけど。インテルコンパイラ使ったことないし。

788:デフォルトの名無しさん
08/01/22 16:22:42
インテルコンパイラとgccだとやっぱり最適化はインテルの方が上?

789:デフォルトの名無しさん
08/01/22 18:18:26
上。特に、オブジェクト間最適化は凄い。

790:デフォルトの名無しさん
08/02/24 17:30:31
オブジェクト間最適化って何?

791:デフォルトの名無しさん
08/02/24 18:03:39
リンクの段階で最適化かけるんじゃないの

792:デフォルトの名無しさん
08/03/20 10:54:39
それならVC8も負けてないぜ。
リンク時間の長さがそれを証明してくれている。

793:デフォルトの名無しさん
08/03/20 11:48:43
pgi使え


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5386日前に更新/148 KB
担当:undef