タグ

C++に関するsassanoのブックマーク (367)

  • wat-array : wavelet木を利用した高速配列処理ライブラリ - Preferred Networks Research & Development

    こんにちは岡野原です。もう年末になりましたが、私の今年はこれからです。 wat-arrayというC++ライブラリを公開しました。 google code:wat-array wat-arrayはフリーソフトウェアであり、修正BSDライセンスに基づいて利用できます. wat-arrayはwavelet木と呼ばれるデータ構造を利用することにより、配列上の様々な処理を効率的に行うことができるC++ライブラリです。 例えば、 – 任意の連続した範囲内にある最大値 /最小値 / k番目に大きい値, またそれらの出現位置、頻度 – 任意の連続した範囲内にある指定した文字cの出現回数、c未満/より大きい文字の出現回数 – 任意の文字のi番目の出現位置 といったものを求めることが全て範囲長、入力長に対して定数時間で行うことができます。 例えば長さ10億、値の範囲が0から1000万であるような配列A中のA[

    wat-array : wavelet木を利用した高速配列処理ライブラリ - Preferred Networks Research & Development
  • Jolt Awards が読みたい steps to phantasien t(2007-07-14)

    よく書評を読む. 屋で勢い余ってハズレのを引きたくない. 一方で世の中あてにならない書評も多い. どこかに鉄板のおすすめリストはないかと考え, ふと Jolt Awards を思いだした. Jolt Awards は プログラマ向けのソフトウェアからウェブサイトや書籍までを扱う総花的なアワード. DDJ などを発行する CMP が開催している. ウェブサイトには "The Jolt Awards are the Oscars of our industry." とあるが, ちょっと褒めすぎだとは思う. アフィリエイトがてら Jolt Awards の歴代入賞を並べてみた. 思ったより玉石混合. でも時系列に眺めると時代を感じて楽しい. 1990 年から 2006 年まで. "Jolt Winner" がいわゆる "大賞", "Productivity Winners" は入賞くらい

    sassano
    sassano 2010/12/15
  • 頻度計数における unordered_map の調整(C++) - やた@はてな日記

    形態素の頻度をカウントするというシンプルなタスクで std::tr1::unordered_map の性能について実験してみました.std::string より const char * の方がメモリを節約できるというような軽い内容です. 実験概要 実験環境は以下のとおりです. 実験環境 CPU:Core 2 Duo U9600 1.60GHz コンパイラ:gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) 入力として使用したのは,ウェブコーパスから抽出した形態素を改行区切りで保存したファイルです. 入力 サイズ:815,793,701 bytes 形態素数:133,940,786 異なり数:516,612 形態素の入力については,std::ios::sync_with_stdio(false) を呼び出した後で std::getline() を使うようにし

    頻度計数における unordered_map の調整(C++) - やた@はてな日記
    sassano
    sassano 2010/11/29
  • 密/疎ベクトルのトレードオフを調べてみた - ny23の日記

    k-means を実装していて,疎ベクトルと密ベクトルのトレードオフ(距離計算の速度差)が気になったので軽く実験してみた.具体的に知りたかったのは,どれぐらい疎なら疎ベクトルを使った方が距離計算が速くなるか,という問に対する答え.空間使用率の改善については sparse vector における index と value の型のサイズ比でほぼ自明に分かるが,速度に関してはコンパイラの最適化の加減もあるので良く分からない.以下がテストコード(ややずぼらな実装). [追記] 折角なので,Eigen 3.0-beta2 とも比べてみた. #include <sys/time.h> #include <cstdio> #include <cstdlib> #include <cstring> #include <vector> #include <tr1/random> #include <eig

    密/疎ベクトルのトレードオフを調べてみた - ny23の日記
    sassano
    sassano 2010/11/27
  • はてなブログ | 無料ブログを作成しよう

    新米と秋刀魚のわた焼き お刺身用の秋刀魚を買いました。1尾250円です 3枚におろして、秋刀魚のわたに酒、味醂、醤油で調味して1時間ほど漬け込み、グリルで焼きました 秋刀魚のわた焼き わたの、苦味が程よくマイルドに調味され、クセになる味わいです 艶やかな新米と一緒に 自家製お漬物 土…

    はてなブログ | 無料ブログを作成しよう
    sassano
    sassano 2010/11/18
  • 小規模データで単語の数を数えてみた (2) - ny23の日記

    大規模データで単語の数を数える - ny23の日記 でみたように,単純に高頻度の item が欲しい場合には,小規模データで単語の数を数えてみた (1) - ny23の日記 で使った sketch-based なアルゴリズムよりは,counter-based なアルゴリズムの方が(キーを陽に保存するので)使い勝手が良い.というわけで,space saving アルゴリズムを実装してみた.カウンタのデータ構造には,原著論文 Space saving (Efficient computation of frequent and top-k elements in data streams, ICDT 2005) に書いてある stream summary をほぼ定義通り素直に実装して利用. // GNU GPL version 2 copyright@ny23 #include <cstdio

    小規模データで単語の数を数えてみた (2) - ny23の日記
    sassano
    sassano 2010/11/18
  • 小規模データで単語の数を数えてみた (1) - ny23の日記

    大規模データで単語の数を数える - ny23の日記 で書いた Count-Min Sketch で,誤差を減らすヒューリスティクス (conservative update) New directions in traffic measurement and accounting (SIGCOMM Comput. Commun. Rev., 32(4), 2002) を実装して,動的ダブル配列を使って Wikipedia のテキスト処理を高速化 - ny23の日記 の小規模データ(1.5GiB の Wikipedia 文)の単語カウントでその効果を見てみた.考えるところはハッシュ関数に何を使うかぐらいで(キーを陽に保持しない限りは)実装はとても簡単. // GNU GPL version 2 copyright@ny23 #include <cstdio> #include <cstdl

    小規模データで単語の数を数えてみた (1) - ny23の日記
    sassano
    sassano 2010/11/16
  • Akso de la Malbono on Twitter: "C++の最近の必読書を3冊挙げるなら"Pattern-Oriented Software Architecture Vol.2","Java Concurrency in Practice","The Art of Multiprocessor Programming"ですね(ぉ"

    C++の最近の必読書を3冊挙げるなら"Pattern-Oriented Software Architecture Vol.2","Java Concurrency in Practice","The Art of Multiprocessor Programming"ですね(ぉ

    Akso de la Malbono on Twitter: "C++の最近の必読書を3冊挙げるなら"Pattern-Oriented Software Architecture Vol.2","Java Concurrency in Practice","The Art of Multiprocessor Programming"ですね(ぉ"
    sassano
    sassano 2010/11/16
  • 効率的な実装を自動的に見つけることは可能か - ny23の日記

    最近は新しいアルゴリズムが提案されると,素早く実装する人が沢山いる.また,色々な実装を比較して情報を公開している人もたくさんいる.いずれにせよ,そこに多分の労力が割かれていることは間違いない.利用者側の立場からすると,「取り敢えず公開されていたから」という理由で,非効率的な実装を運悪く選択し,ボトルネックになっていると気がつかないで使い続けたりするのはなるべく避けたい.実装する側からすると,高級言語が隠蔽するライブラリの落とし穴にどういうものがあるのかは,把握しておきたい. さて,なるべく労力を使わず,(非)効率的な実装を自動的に判別することは可能だろうか.例えばプログラム言語を限定して (C++ とか),ある特定の問題を解く実装の中から,(例えば機械学習などを用いて)時間/空間効率の良い(悪い)実装を見つけることはできるだろうか.あるいは逆に,時間/空間効率の良い(悪い)実装を示唆する素

    効率的な実装を自動的に見つけることは可能か - ny23の日記
    sassano
    sassano 2010/11/11
  • http://www.parashift.com/c%20%20-faq-lite/index.html

    sassano
    sassano 2010/11/10
  • Spaghetti Source - Suffix Array

    Suffix Array (Larsson-Sadakane) 説明 Suffix Arrayとは,与えられた文字列の接尾辞の集合を辞書順ソートしたものである.近年,これを用いることによって多くの文字列の問題が解かれることがわかってきた. Larsson-Sadakane は Suffix Array を O(n (log n)^2) 時間で構成するアルゴリズムである.Mamber-Myers と同様のアイデアによって文字列長を倍加させ,O(log n) 回の multikey quicksort を行うことにより,全体で O(n (log n)^2) の計算量を達成する.詳しくは適当な文献を参照. Suffix Array を用いて解けるもっとも典型的な問題は,文字列の検索である.Suffix Array 上で二分探索を行えば,O(m log n) でパターンの検索ができる.また,Suf

    sassano
    sassano 2010/11/08
  • http://twitter.com/kzk_mover/status/25965140683

    http://twitter.com/kzk_mover/status/25965140683
    sassano
    sassano 2010/09/30
  • 「Mozcソースコード徹底解説」 at 第2回自然言語処理勉強会 - nokunoの日記

    というわけで自然言語処理勉強会を開催しました。第2回自然言語処理勉強会@東京 : ATND私の発表は、シルバーウィークにもう1回読んでみたMozcのソースコードの解説をしました。Tokyotextmining02 mozcView more presentations from nokuno. その他、関連するリンクです。Togetter - 「第2回 自然言語処理勉強会@東京 (#tokyotextmining)」 自然言語処理研究会 - tsubosakaの日記 (id:tsubosakaさん) 自然言語処理勉強会で「ナイーブベイズによる言語判定」を発表してきました - Mi manca qualche giovedi`? (id:n_shuyoさん)Query Suggestion @ tokyotextmining#2 (@y_benjoさん)

    sassano
    sassano 2010/09/26
  • 開発メモ: 50行のC++コードでWebサーバを実装する

    「Kyoto Tycoonの設計 その四」改め、50行でWebサーバを書く方法を解説する。前回実装した「多重I/Oマルチスレッド汎用TCPサーバ」の上にHTTPの処理を行う層をつけて、「多重I/Oマルチスレッド汎用HTTPサーバ」を司るクラスを実装してみたので、それを使ってちょちょいとやる。 URLクラス HTTPと言えばURLが使えないと意味がない。URLは単なる文字列として扱ってもよいのだが、様々なシーンで分解や加工が必要になり、その処理はなにげに複雑で面倒なので、予めクラスとして導出しておいた方がよいだろう。 class URL { public: // 文字列のURLを解析して内部構造を作る void set_expression(const std::string& expr); // スキーム要素を設定する void set_scheme(const std::string&

    sassano
    sassano 2010/09/21
  • C++11 - Wikipedia

    この記事は更新が必要とされています。 この記事には古い情報が掲載されています。編集の際に新しい情報を記事に反映させてください。反映後、このタグは除去してください。(2019年1月) C++11は、プログラミング言語 C++ のISO標準 ISO/IEC 14882:2011 の略称である。規格の策定中は2009年中の標準化を目指していたため、C++0x という仮称で呼ばれていた。 ISO/IEC 14882:2003 (C++03) に代わるものとして、2011年8月12日にISOによって承認された[4]。後継のC++14が2014年8月18日に承認されている。 コア言語への機能追加や標準C++ライブラリの拡張を施し、C++TR1ライブラリの大部分を(数学的特殊関数ライブラリを除いて)取り込んでいる。 C++ への修正はコア言語と標準ライブラリの双方に及ぶ。 委員会は、新規格の個別の要素の

    sassano
    sassano 2010/08/31
  • 行列分解ライブラリredsvdを公開しました - DO++

    大規模疎行列向けの行列分解ライブラリredsvdを公開しました. redsvd 大規模疎行列向けの特異値分解や主成分分析,固有値分解を行うライブラリredsvdを公開しました. 修正BSDライセンスで公開しており,コマンドラインから使える他,C++ライブラリが用意されています. 例えば,行と列数がそれぞれ10万,非零の要素が1000万からなる疎行列に対する上位20位までの特異値分解を約2秒で処理します. 特異値分解とか,使っている技術の詳細とか応用事例を以下に簡単に紹介しましたので,興味のある方は参考にしてください. 特異値分解とは まず行列を適当に復習します.行列Xの転置をX^tと表すことにします.またIを単位行列とし,Oを全ての成分が0である零行列とします.また,行列XX^t=IであるようなXを直交行列と呼びます.Xが直交行列の時,Xvはベクトルvを長さを変えずに回転させます.ここでは

    行列分解ライブラリredsvdを公開しました - DO++
    sassano
    sassano 2010/08/31
  • - MYCOM BOOKS - プログラミングコンテストチャレンジブック

    ■内容紹介 現在、プログラミングコンテストは数多く開催されています。Google Code Jam、TopCoder、ACM/ICPCなどの名前を聞いたことがある人も少なくないでしょう。書で扱うのはそれらのような、問題を正確にできるだけ多く解くことを競うプログラミングコンテストです。 プログラミングコンテストは気軽に参加することができます。例えば、Google Code JamやTopCoderはインターネット経由でコンテストが行われるので、Webサイトでの登録を済ませ、決まった時間にコンピュータの前に居れば参加することができます。 しかし、プログラミングコンテストの世界は非常に奥が深く、経験を積んだプログラマーであっても良い成績を残すことは容易ではありません。プログラミングコンテストで勝つには、柔軟な発想力と幅広い知識を用いて問題を解くアルゴリズムを考え、それらを正確に実装しデバッ

  • http://nzgn.net/

  • 「プログラミングの魔導書」の情報公開 - Faith and Brave - C++で遊ぼう

    http://longgate.co.jp/products.html 弊社、株式会社ロングゲートで、プログラミング雑誌を作るというプロジェクトが進行しています。 書創刊の目的は、プログラミングの入門記事が巷に溢れる今、プログラマのさらなる成長のため情報発信を行い、業界全体の技術力を向上させることです。 雑誌といっても、記事の質を保つために不定期刊行としていることから、実際には雑誌ライクな書籍となります。 書籍名は「プログラミングの魔導書〜Programmers' Grimoire〜」です。 創刊号となる今回のテーマは、サブタイトルにも含まれている「C++」です。全ての記事がプログラミング言語C++に関するものとなっています。 Vol.1のテーマをC++としたのは奇をてらったものではありません。 C++は習得の難しい言語と言われておりますが、近年はBoost C++ Librariesに

    「プログラミングの魔導書」の情報公開 - Faith and Brave - C++で遊ぼう
    sassano
    sassano 2010/08/24
  • gcc で返り値の確認忘れに警告を出す(warn_unused_result) - やた@はてな日記

    以前,liblzma のヘッダを眺めているときに気づいたのですが,gcc 3.4 以降では,warn_unused_result という属性を関数に与えておくと,返り値を確認していない場合に警告を出してくれるようです. わざわざエラーコードを返すような設計にしても,手抜きで確認しなかったり,途中で忘れてしまったりということはよくありますから,重要なところに付けておくことで,バグの発生を防ぐことができるかもしれません.片端から付けておくという荒技も,一つの選択肢としてはあります.ただし,ちょっとしたコードを書いて試したいというときには邪魔です. 属性の指定は,関数の宣言に対しておこないます.関数の定義に対して属性を指定しようとすると gcc に ``error: attributes are not allowed on a function-definition'' と怒られてしまい,コン

    gcc で返り値の確認忘れに警告を出す(warn_unused_result) - やた@はてな日記