タグ

c++に関するmainyaaのブックマーク (35)

  • STL風に使えるマップ型コンテナの紹介と性能比較 - Preferred Networks Research & Development

    最近スマートフォンに乗り換えました。徳永です。 C++は世に数あるプログラミング言語の中では比較的メモリをわない方ですが、それでもメモリ使用量が問題となる場合はあります。そのような場合の対処方法はいくつか有りますが、手軽に選択できる方法として、今日はSTLのmapやunordered_mapと同じ感じで使えるデータ構造をいくつか紹介したい思います。 以下、計算量の表記をする際には、要素数をnとします。 Loki::AssocVector LokiはModern C++ Designというの作者であるAndrei Alexandrescuが開発したライブラリです。AssocVectorはその中の一つとして提供されているクラスで、vector<pair<key, value> >という型のベクターをkeyでソートした状態で持つ事により、二分探索による要素の探索を可能にしたデータ構造です。こ

  • 例外指定

    C++には、例外指定というものがある。これは、ある関数から投げられる例外を、あらかじめ明示的に指定しようという目的で作られた。 void f() throw(int, float, std::exception) ; ここで、もし関数fが、int, float, std::exception以外の例外を投げた場合、関数std::unexpectedが呼ばれる。つまりこれは、関数tryブロックを使って以下のように書くのに等しい。 void f() try { // 関数体 } catch( int ) { throw ; } catch( float ) { throw ; } catch( std::exception ){ throw ; } catch( ... ) { std::unexpected() ; } この機能は、それほど難しいこともない。極論で言えば、上記のように、単な

    mainyaa
    mainyaa 2010/08/16
  • Adobe Alchemy登場、C/C++アプリをFlashで動作させる研究にLLVM技術採用 | エンタープライズ | マイコミジャーナル

    Adobe Alchemy 2008年7月、C言語で開発されたアプリケーションやPythonスクリプトがFlash Playerで動作するようになったという報告が複数のブログに掲載されていた。どうやらこの取り組みは一時的なものでも噂でもコンセプトプルーフでもなかったようだ。 Adobe LabsにAlchemyと呼ばれるプロジェクトが登場した。噂されていた内容がそのままプロジェクトになっている。 AlchemyはC/C++で開発されたコードをActionScript仮想マシン(AVM2)で動作するコードにコンパイルするための研究プロジェクトコード名。C/C++で開発された既存のライブラリをFlash PlayerやAdobe AIRで動作するWebアプリケーションから活用できるようにすることを目指している。Flash PlayerやAdobe AIRのポテンシャルを一気に向上させる可能性が

    mainyaa
    mainyaa 2010/01/28
    すげぇ
  • Adobe Alchemy tutorial - Codin’ In The Free World

    alchemyについて C/C++で書かれたコードをActionScript Byte Codeに変換することによって、 AS3とC/C++で連携が可能になる。 注意点 C/C++で書かれてgccでコンパイル済みのネイティブコードとリンクするわけではなく、C/C++コードをllvmを仲介してAction Script Bytecodeにするだけ。 なのでネイティブコード程、実行速度は速くはない でもPure AS3よりは速い。最適化とかの影響。 Flash Playerのサンドボックスで動くので、threadやIOに制限がある。 なので、そのへんに転がってるC/C++のコードがなんでも動くわけではない。 参考 公式 http://labs.adobe.com/technologies/alchemy/ 公式C API http://labs.adobe.com/wiki/index.php

  • 浪漫の求道者:GoogleTestがかなりいけてる その1

    [GoogleTest1.3.0を使ってみた] Google C++ Testing Framework http://code.google.com/p/googletest/ Googleのテストフレームワーク「GoogleTest」に去年の年末くらいから興味を持ち始めて使ってみた。 かなりいけてるのに日語解説が少ないので、やった事をいろいろと書き出す。 なにができるのか・マルチプラットフォーム対応 Windows(VC)、Cygwin(gcc)、LinuxMacOSWindowsCE、Symbian・・・ ・テストコードの自動発見   RUN_ALL_TESTS() で勝手にTEST(Hoge, hoge)と書いたコードを探索して実行してくれる (もちろん任意のテストだけ実行する、しないのオプションもあり) ・豊富なAssertion 失敗(ASSERT)と警告(EXPECT)

  • libxml2 内のメモリの解放 - IT戦記

    ちょっとメモ 今日も valgrind 使ってます libxml2 を使って以下のような XML のパース処理を書く #include <iostream> #include <sstream> #include <boost/shared_ptr.hpp> #include <libxml/xmlreader.h> static int read(void* in, char* buf, int len) { return static_cast<std::istream*>(in)->readsome(buf, len); } int main() { std::istringstream in("<a><b/>hoge<c/></a>"); boost::shared_ptr<xmlTextReader> reader(xmlReaderForIO(read, NULL, &in,

    libxml2 内のメモリの解放 - IT戦記
  • XMPP ライブラリ Gloox のトランスポート層を触る(1) - IT戦記

    一日一回 XMPP 勉強中 とりあえず、 TLS のコネクション貼るところまでできた #include <cassert> #include <iostream> #include <boost/make_shared.hpp> #include <gloox/parser.h> #include <gloox/connectiontcpclient.h> #include <gloox/connectiontls.h> class Bot : public gloox::ConnectionDataHandler, gloox::TagHandler, gloox::TLSHandler { public: Bot() : client_(new gloox::ConnectionTCPClient(this, log_, "talk.google.com", 5222)), raw_c

    XMPP ライブラリ Gloox のトランスポート層を触る(1) - IT戦記
  • C++ のプログラムのデバッグを楽にする方法

    Google が公開しているソフトウェアの解説シリーズ(→その1 , その2)の続きです。今回は google-glog を使ってスタックトレースを表示する方法についてご紹介します。 C++ でプログラムを書いているとよく遭遇するのがセグメンテーション違反というエラーです。不正なアドレスへのアクセスなどによりセグメンテーション違反が起きると、通常、 UNIX 系の OS では SIGSEGV というシグナルによってプログラムが終了するとともに、 core というファイルが作られます。 core ファイルにはデバッガから参照できるいろいろな情報が残っていますが、多くの場合に役に立つのは、スタックトレースという情報です。スタックトレースを見れば、プログラムがどこでクラッシュしたのか、どのような関数を経由してそこにたどり着いたのかがわかります。プログラムがクラッシュした箇所を特定できれば、単純な

    C++ のプログラムのデバッグを楽にする方法
  • C++ 12年ぶりに次世代スタンダードへ - "C++0x" 策定進み草案公開へ | エンタープライズ | マイコミジャーナル

    The C++ Programming Language プログラミング言語C++は1998年に発行され2003年に改訂された国際標準ISO/IEC 14882を仕様として採用している。ISO/IEC 14882はC++の言語仕様と標準ライブラリの双方を規程しており、1998年に規程されたものは通称C++98、2003年に改訂されたものは通称C++03と呼ばれている。現在、JTC1/SC22/WG21 - The C++ Standards Committeeにおいて次期C++仕様"C++0x"の策定が進められている。最終的に12年ぶりに新しいC++が登場ということになりそうだ。 C++0xはC++98/03との互換性は確保しつつ、言語仕様と標準ライブラリの双方の規約を改訂するもので、新しい機能として並列プログラミングのサポートやプログラミングの簡素化、関数プログラミング機能の強化、ジェネ

  • 設計者本人に聞く、 C++次期仕様「C++0x」を理解するための参考文献~Bjarne Stroustrup氏との対話~

    この連載では、Bjarne Stroustrup氏(C++設計者)へのメールインタビューを通して、プログラミング言語設計者の生の声を読者の皆様に直接お伝えしたいと思います。 今回は、開発者自らが選ぶC++の次期仕様「C++0x」を理解するための参考文献を伺いました。 はじめに 新しいソフトウェアを開発すれば、その設計思想、特徴、有用性、魅力を語る説明書が必要になります。説明書の作成には開発作業とは異なる次元の能力と忍耐が要求されます。独自技術を誇る組織の場合、技術紹介資料の作成作業はより困難を極めます。保有技術のすべてを文書化するわけにはいきません。開示レベルを慎重に設定しながら、自分たちの技術の魅力や有用性を記述しなければなりません。開示レベルの設定は簡単なことではありません。担当開発者は能的に、より多くの情報を公開したいと考える傾向があります。組織の経営者は競合他社の動きを警戒し、公

    設計者本人に聞く、 C++次期仕様「C++0x」を理解するための参考文献~Bjarne Stroustrup氏との対話~
  • Alchemy - Adobe Labs

    Project "Alchemy" is now the Flash C++ Compiler (FlasCC) FlasCC lets you bring existing C/C++ code to the web, with high performance, across browsers. Leverage the entire Flash Runtime API from C++, deliver full GPU accelerated graphics, and reach over a billion people with no install using C/C++. Learn more and start using FlasCC Adobe Labs: Home | Technologies | Download | Community | RSS Feeds

    mainyaa
    mainyaa 2008/11/18
    これでいろんなライブラリをActionScriptで再実装しなくてよくなる?
  • Visual C++の勉強部屋

    理工系、特に電気系、の学生と技術者を対象としたVisual C++の解説を行います。Visual C++を始めたいが、よく分からないという人は、これを参考にしてください。ただし、初めてプログラムを学ぶ全くの初心者向けではありません。 資料の一部のJava版が(株)翔泳社のウエブサイトCodeZineにありますので、こちらもご利用ください(Java版とある場所をクリックして下さい)。Visual C++ 6.0版(現在は全部削除)が最初に公開され、そのJava版がCodeZineに寄稿され、その後に現在のVisual C++ 2005 Express Edition版が作成されています。 Java版は、すべてアプレットになっていますので、ブラウザから試してみることができます(Javaランタイム必要)。 Visual C++ 2008 Express Editionが無償でダウンロード

  • 各種マップ実装の性能比較 - mixi engineer blog

    今回は小ネタのmikioです。key/valueのレコードを高速に格納・参照・削除する仕組みが連想配列とかマップとか呼ばれて親しまれていますが、Tokyo Cabinetのオンメモリマップの性能をC++の各種実装と比較してみました。 以下の実装を対象として、100万レコードの格納と検索にかかる時間を計測します。キーと値は各8バイトの文字列とします。 Tokyo Cabientのオンメモリマップ(TCMAP) STL(C++の標準テンプレートライブラリ)のmapとmulti mapとset GNU拡張テンプレートのハッシュマップ Googleのdense hashおよびsparse hash テストコードはこちらに挙げておきます。具体的な操作としては、マップオブジェクトを生成し、バケット配列の要素数をレコード数と同じにチューニングし、ループを回してレコード群を格納します。なお、STLのマップ

    各種マップ実装の性能比較 - mixi engineer blog
  • Using V8 - Google's Chrome JavaScript Virtual Machine

    Tutorial and sample explaining how to use the V8 virtual machine inside your application. Download demo - 2.97 MBDownload demo with object -24.1 KBDownload benchmark v.1 - 706 KBDownload benchmark v.2 - 704 KB Introduction Who never wondered how virtual machines work? But, better than creating your own virtual machine, what if you can use one done by a big company focusing on improving the speed t

    Using V8 - Google's Chrome JavaScript Virtual Machine
  • サイボウズ株式会社

    サイボウズはクラウドベースのグループウェアや業務改善サービスを軸に、社会のチームワーク向上を支援しています。

    サイボウズ株式会社