プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 このページをアンテナに追加 RSSフィード

 iTunes Music Store(Japan) なかのひと あわせて読みたいブログパーツ
|

0001 | 00 |
2004 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2008 | 01 | 02 | 03 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 |
2010 | 03 | 04 | 06 | 07 | 09 | 10 | 11 |
2011 | 01 | 02 | 10 |
2012 | 04 |
2013 | 01 | 05 | 06 | 07 | 08 | 10 |
2014 | 02 | 03 | 05 | 09 |
2015 | 04 |
2016 | 09 | 11 | 12 |
はてな一覧
アンテナに追加
私のアンテナ
私のダイアリー
私のアーカイブ
私のアイデア
私のブックマーク
私のグループ
私のキーワード
ニュース系、今まで続いているシリーズモノの読み物
dKingyo Utility Toolkit Projectのリリース情報
やっぱり暗号化は大人の味(笑)
プログラムのパッキング方法を調べよ
ココが厳しいよMinGW
ライブラリアン通信
ゲームプログラミングどうしよう
CRCについて
ビット演算練習
d金魚の今更Ajax
Windows Tips
VC6 Tips
Win32 WTL Tips
Ruby for C++ User
Ruby Tips
今日のRubyで嵌った事
正規表現PIECE
書きかけ
続く・・・

私のダイアリーの人気記事
新しくブックマークされた記事


あまり、役に立たなそうな個人的に調べた情報や妄想に耽った事、今 勉強している事ヒソヒソと公開していたりします。 | 登録してくれている方々 | d金魚にメール | 当サイトは640x480の画面解像度に対応しています。
日記へのリンク、アンリンクはフリーですが、selfタグのついている部分のコンテンツの引用はご遠慮願います。ご協力よろしくお願いします。


 | 

2010-07-26 STLのvector<POD>をPOD配列並の速度で使う方法

[][][]STLvector<POD>の実行速度を犠牲にしないで使う方法 STLのvector<POD>の実行速度を犠牲にしないで使う方法を含むブックマーク STLのvector<POD>の実行速度を犠牲にしないで使う方法のブックマークコメント

 昔、vectorは遅い!という事をこのブログに記したが、実際push_back()を使って事前に確保した領域を拡張しない限り遅くないのでネタとして*1ここにメモしておくことにした。

 要するにvector<POD>がPOD*2配列と張り合いたいのならばresize使って必要な領域を確保してoperator []でアクセスすること。そしてpush_back()は使うな!である

http://ideone.com/cRo9i

//正しいvectorを使った配列の使い方
//resize後 配列と同じように・・・

#include <iostream>
#include <boost/scoped_array.hpp>
#include <vector>
using namespace std;

const int gSize = 100;

int main(){
 typedef vector<int> vt;
 typedef boost::scoped_array<int> sa;
 sa a(new int[gSize]);
 vt v;
 
 v.resize(gSize);
 
 for(int i=0;i<gSize;i++){
  a[i] = rand();
  v[i] = a[i];
 }
 
 return 0;
} 

[][]vector<POD>のreserve() push_back()版 vector<POD>のreserve() push_back()版を含むブックマーク vector<POD>のreserve() push_back()版のブックマークコメント

http://ideone.com/wigUv

[][]結論:やっぱりpush_back()ってほんの少し遅いらしいよー 結論:やっぱりpush_back()ってほんの少し遅いらしいよーを含むブックマーク 結論:やっぱりpush_back()ってほんの少し遅いらしいよーのブックマークコメント

 そういえば、何故、resize operator[]が一番速い方法として取り上げたかをやっと思い出した。これからコードテストコード置き場は私のHDD内ではなくideoneが肩代わりしてくれるって事ですかね。 http://ideone.com/uGMtx > http://ideone.com/q9C0o 

[][]vector<POD>と張り合う為に頂戴した意見 vector<POD>と張り合う為に頂戴した意見を含むブックマーク vector<POD>と張り合う為に頂戴した意見のブックマークコメント

boost::scoped_array

boost::shared_array

boost::shared_ptr<T[]>

boost::array

C言語POD array[size];//sizeはint型変数

*1:前にもやった覚えがあるがhttp://d.hatena.ne.jp/studiokingyo/20040916

*2Plane Old Data : C言語でも使える型の事 int char double structなど

uskzuskz 2010/07/26 16:08 reserveしてpush_back

studiokingyostudiokingyo 2010/07/26 18:57 チェック早いですね。POD配列のインターフェースと同じという利点があるのですが、reserve版も用意しておきます。

トラックバック - http://d.hatena.ne.jp/studiokingyo/20100726
 | 
Program | Debug | dKingyo Utility Toolkit | library | D言語 | 御本とか | 備忘録 | テクニック | WayBack | 格言 | 英語 | 他力本願 | news | software |

デースケドガー