タグ

Cとcに関するyokochieのブックマーク (126)

  • Google PerftoolsのtcmallocでLinuxアプリを高速化してみた (blog@browncat.org)

    blog@browncat.org Web, Linux, Ubuntu, Mac, PDA, 携帯電話, プログラミング, ソフトウェア&落書き Google Perftoolsはパフォーマンス測定用のプロファイラで有名ですが、その中にはTCMalloc(Thread Caching Malloc)という高速なmallocライブラリが含まれています。 google-perftools - Google Code TCMalloc : Thread-Caching Malloc TCMallocのページを見ると例として通常のmalloc 300nsに対して50nsで実行が終わるとあります。特にマルチスレッドで効果を発揮し、速度とメモリを節約するとあります。 mallocはユーザランドの根幹をなす重要なライブラリの一つなので入れ換えは恐いといえば恐いですが、それだけに効果もあることが予想され

  • GCC some extensions

    gcc(Gnu C Compiler)の拡張文法 [警告!] C/C++言語初心者はこのページを読まないでください。 このページではgcc独自のC/C++拡張文法について解説します。 これらの拡張文法が可能にする機構は確かに便利なのですが、 もちろんANSI規格に従っていないので、一般的には使うべきではありません。 C/C++言語文法を学び始めている初心者はこれらgcc拡張文法を 知るべきではありません。C/C++言語を正しく理解する上で大きな 支障となります。 C/C++言語を十分に熟知した者は、gccがこのようなこともすることを 「雑談」として知っておくと楽しいかもしれません。もちろん 実戦に使うべきではありませんが。しかし初心者が偶然に、これらの 機能を使ってうまくいく場合がありますので、そのような初心者を 見つけたら、それが標準規格ではないことを注意してください。 配列変数をコピー

  • 本の虫: 多くのプログラマは言語を表面的な理解だけで使っている

    一般のプログラマの多くは、プログラミング言語というものを、ごく浅い表面的な理解だけで使っている。これは、いわゆる「入門書」によるところが大きい。入門書は、言語をできるだけパターンで教えようとする。かくかくしかじかの場合には、とらとらうまうまのように書いておけばいい、などといった具合だ。 たとえば、配列の全要素や、aggregateの全メンバーをゼロで初期化したいとする。多くのC++プログラマは、以下のように書く事であろう。 int a[100] = {0} ; このコードは、正しく動く。配列aの要素は、すべてゼロで初期化される。しかし、C++という言語を考えた場合、{0}と書く必要はない。空の{}で十分なのである。 int a[100] = {} ; では何故、多くのC++プログラマは{0}と書くのか。それは、多くの参考書が、そのように書いているからに過ぎない。大多数のC++プログラマは、

  • ソースコードリーディング(wコマンド編)-ロードアベレージ/ログインユーザ/プロセス情報の取得

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、みなさんお久しぶりです。Yahoo!ショッピング開発担当の吉野哲仁です。 約1年3ヶ月ぶりのソースコードリーディングは、wコマンドのソースコードを読んでいきたいと思います。 ■はじめに wコマンドは、システムの稼働状況とログインユーザーの情報を表示するコマンドです。 システム運用ではよく使われます。ロードアベレージを取得するために使用する場合も多いと思います。 wコマンドでやっていることは大きく分けて2つ。 ・現在のシステム状況(システム稼働時間、ロードアベレージ)の表示 ・現在のログインユーザー情報(ユーザー名、端末名、ログイン元ホスト、現在実行しているコマンドなど)の表示 です。今回はこの2つにスポットを当てて読ん

    ソースコードリーディング(wコマンド編)-ロードアベレージ/ログインユーザ/プロセス情報の取得
  • まあ割とどうでもいいこと(はじめてのgcc -S) - kuenishi's blog

    Cでプログラムを書いているとよく出会う場面(いやCじゃなくてもよく出会う) #define OPTION_A (1) #define OPTION_B (2) #define OPTION_C (3) #define OPTION_D (4) #define OPTION_E (5) int exec_command( int cmd, int args, char** argv ){ switch(cmd){ case OPTION_A: do_a(args, argv); break; case OPTION_B: do_b(args, argv); break; case OPTION_C: do_c(args, argv); break; case OPTION_D: do_d(args, argv); break; case OPTION_E: do_e(args, argv);

    まあ割とどうでもいいこと(はじめてのgcc -S) - kuenishi's blog
  • Grand Central Dispatchでお手軽並列処理 - Radium Software

    Grand Central DispatchはMac OS X 10.6およびiOS 4に追加された新技術だ。 このGrand Central Dispatch(以下"GCD")は、プログラマー以外にその効用を説明することが難しい技術だ。漠然と「マルチコアプロセッサを効率的に使うための技術」と言っておくこともできるが、それじゃあなんでiOS 4に搭載されてんの?という話になってしまう。 これをプログラマー向けに説明するならば、次のような感じになるかと思う。 GCCを拡張してクロージャ的な機能を追加してみたら、非同期処理とか並列処理とかすげー書きやすくなったんで、ちょっとその辺りまとめてみました。 僕の個人的な意見としては、単にAppleのコンパイラー技術者たちがC言語ファミリー(C/C++/Obj-C)にクロージャを追加したかっただけなんじゃないかな、と考えている。 とりあえずマンデルブロ

    Grand Central Dispatchでお手軽並列処理 - Radium Software
  • Perlゼミ(サンプルコードPerl入門)

    Perl入学式 全6回のPerl入門講座。東京、大阪、沖縄、札幌で開催。(東京は4月と10月スタート、それ以外は5月スタート) YAPC::Japan Perlを軸としたITに関わる全ての人のためのカンファレンス。 東京 吉祥寺.pm 五反田.pm 大阪 なにわPerl 沖縄 沖縄.pm

  • libevent-1.3b, libmemcached-1.4.4 で固まる? - moratorium

    libevent-1.3b, libmemcached-1.4.4 で固まる? 2010-08-13 (Fri) 0:56 Uncategorized mixiの件について、nealさんから情報を貰ったので数時間調査してみた。というのも、うちの製品でもlibevent(evhttp)をリクエスト処理に使っているので、これにバグが有ると非常に困る。 Nealさんのつぶやき ひとまず、libevent-1.3b, libmemcached-1.4.4をビルドする。memcachedは、-cで同時接続数を制限できる。で、この同時接続数というのは、実はファイルディスクリプタの数を制限する事で達成されている。memcached.cの以下の部分。 /* * If needed, increase rlimits to allow as many connections * as needed. */

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • zlib 入門

    公式サイトは http://zlib.net/ になりました。 以下の記述はかなり古いものを急いで書き直したものです。 おかしなところがありましたらご教示ください。 zlib とは zlib は Zip や gzip に使われている圧縮アルゴリズムをライブラリ化したものです。 作者は Zip や gzip 同様 Jean-loup Gailly と Mark Adler です。 ライセンスは BSD 類似です(詳しくは zlib 配布に含まれる zlib.h のコメントをご覧ください)[標準では使用されませんが,アセンブラ版 match.S はGPLです]。 画像フォーマット PNG の圧縮も zlib で行われています。 Java(JDK 1.1 以降)には zlib に相当するものが組み込まれています。 java.util.zip のドキュメントをご覧ください。 zlib の圧縮アルゴ

  • C - でOpenMP使ったら、+二行で範囲10億が2秒 : 404 Blog Not Found

    2010年08月06日05:30 カテゴリMath C - でOpenMP使ったら、+二行で範囲10億が2秒 ぬあんと 素数10億まで3秒 - JGeek Log danさんの場合, 1bit でフラグを記憶してるのでメモリが1/8 で済む。そこでメモリアクセスの時間が効いてるんだろう。それならキャッシュに収まる位のブロックに計算を分割しその内側で素数pのループ回せばもっと速くなるかも?と思いやってみた。見事3秒で終わった! これを上回ることは出来るか? 出来ました。 以下、証拠。 % gcc -W -Wall -O6 -fopenmp primes_ita.c primes_ita.c: In function ‘main’: primes_ita.c:69: warning: unused variable ‘p’ % time ./a.out 06.983u 0.084s 0:01.

    C - でOpenMP使ったら、+二行で範囲10億が2秒 : 404 Blog Not Found
  • モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人

    まだC, C++がないようなので書いてみた。主にLinux(DebianとかUbuntu)での環境構築について。 コンパイラ まずはapt-getでコンパイラをインストールする。UbuntuやDebianなら以下のコマンドでgccやg++および標準ライブラリ等がインストールされる。 $ sudo apt-get install build-essential デバッグツール デバッガおよびデバッグツールは少なくとも以下の三つは入れる。(あとltraceも欲しいかな?) GDB 言わずと知れたGNUのデバッガ Valgrind メモリリークや不正メモリアクセスの検出 strace システムコールのトレース $ sudo apt-get install gdb valgrind strace ビルドツール C, C++のビルドツールといえばまずmakeが浮かぶけど、最近ではSConsやCMak

    モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人
  • C - で私も素数を数えてみた : 404 Blog Not Found

    2010年07月26日18:30 カテゴリMath C - で私も素数を数えてみた 世間は夏休みだそうだし、連日の猛暑で体調も底だし、というわけで私も素数を数えてみた。 10兆までの素数のリストを作ってみませんか? - 記者の眼:ITpro もしあなたがプログラマだったら、プログラムを書いて10兆までの素数のリストを作ってみてほしい。情報システムの開発に携わる人であれば、10兆までの素数のリストを出力するシステムの見積もりを考えてみてほしい。費用はどれくらいかかるか、納期はどれくらいか、あなたはどんな答を出すだろうか。仕様書はうまく書けるだろうか。 プライムナンバーズ David Wells / 伊知地宏監訳 / さかいなおみ訳 [原著:Prime Numbers: The Most Mysterious Figures In Math] といっても原田記者と同じように書いても芸がないので

    C - で私も素数を数えてみた : 404 Blog Not Found
  • 今まで知らなかったswitch文の仕様

    switch文に指定する文は、ブロックでなくてもよい。 int main() { // OK switch(0) ; // OK switch(0) default : std::cout << "hello" << std::endl ; } もちろん、ラベル文がたったのひとつしか書けないので、実用上の意味はない。ブロックでなくてもいいとは知らなかった。てっきり、ブロックを指定するものだと思っていた。知らなかった。まあ、知っていても、全く役に立たない知識ではある。 追記:コメントを素直に実装するとこうなる void f( int const value ) { int i = 0 ; switch( value ) for ( ; i != 10 ; ++i ) { case 1 : case 2 : std::cout << "value is 1 or 2" << std::endl

    yokochie
    yokochie 2010/07/20
    まぁ、やらんけど
  • 手軽に出来るApacheモジュール開発

    [実行結果] Creating [DIR]  hello_world Creating [FILE] hello_world/Makefile Creating [FILE] hello_world/modules.mk Creating [FILE] hello_world/mod_hello_world.c Creating [FILE] hello_world/.deps #include "httpd.h"#include "http_config.h"#include "http_protocol.h"#include "ap_config.h" /* The sample content handler */static int hello_world_handler(request_rec *r){ if (strcmp(r->handler, "hello_world"))

    手軽に出来るApacheモジュール開発
  • Linus氏のC++に対する最近の否定的見解 | taro-nishinoの日記 | スラド

    最近、Linus氏はまたしてもReal World TechnologiesのModerated DiscussionsフォーラムでC++に対する否定的見解を投稿したことは皆さんも御存知でしょう。主要な投稿は以下の5つです。 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110563&threadid=110549&roomid=2 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110577&threadid=110549&roomid=2 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110618&threadid=110549&roomid=2 ht

  • 画像処理ソフトウェア「ImageMagick」の脆弱性

    はじめに この連載では、最初に問題のあるコードを示します。前回に引き続き今回も、まずはコードだけを見て、どこに問題があるのか考えてみてください。 コードの後には、コードに含まれる脆弱性を見つけるためのヒントや、コードが行おうとしていることを理解するために役立つ背景知識などを説明します。コードを見ただけではどこに問題があるのか分からない、といった場合は、これらの説明を手がかりに考えてみてください。 どこに問題があるのか分かったら、次にどのように修正すべきかを考えましょう。修正方法は一通りとは限りません。むしろ、複数の修正方法が考えられることが多いと思います。 最後に、実際にどのような修正が行われたか説明します。自分が考えた修正案と比較してみてください。 オープンソースの画像処理ソフトウェア「ImageMagick」 今回はオープンソースの画像処理ソフトウェアであるImageMagickを取り

    画像処理ソフトウェア「ImageMagick」の脆弱性
  • Emacs23.2が更に1ビット稼いだ秘密 — ありえるえりあ

    Recent entries Apache2.4のリリース予定は来年(2011年)初め(あくまで予定) inoue 2010-12-23 Herokuの発音 inoue 2010-12-20 雑誌記事「ソフトウェア・テストPRESS Vol.9」の原稿公開 inoue 2010-12-18 IPA未踏のニュース inoue 2010-12-15 労基法とチキンゲーム inoue 2010-12-06 フロントエンドエンジニア inoue 2010-12-03 ASCII.technologies誌にMapReduceの記事を書きました inoue 2010-11-25 技術評論社パーフェクトシリーズ絶賛発売中 inoue 2010-11-24 雑誌連載「Emacsのトラノマキ」の原稿(part8)公開 inoue 2010-11-22 RESTの当惑 inoue 2010-11-22 「プ

    yokochie
    yokochie 2010/05/11
    むずい。。。
  • ファイルを追記モードで開くとseekできない、という話 (C言語の高水準I/OとかPerlとか) - kazuhoのメモ置き場

    C言語に初めて触ってから20年のロートルですが今まで知りませんでした。man fopen より。 The fopen() function opens the file whose name is the string pointed to by filename and associates a stream with it. ``a'' Open for writing. The file is created if it does not exist. The stream is positioned at the end of the file. Subsequent writes to the file will always end up at the then current end of file, irrespective of any intervening fseek

    ファイルを追記モードで開くとseekできない、という話 (C言語の高水準I/OとかPerlとか) - kazuhoのメモ置き場
    yokochie
    yokochie 2010/04/26
  • CERT C コーディングスタンダード

    CERT C コーディングスタンダード 00. はじめに 01. プリプロセッサ (PRE) 02. 宣言と初期化 (DCL) 03. 式 (EXP) 04. 整数 (INT) 05. 浮動小数点 (FLP) 06. 配列 (ARR) 07. 文字と文字列 (STR) 08. メモリ管理 (MEM) 09. 入出力 (FIO) 10. 環境 (ENV) 11. シグナル (SIG) 12. エラー処理 (ERR) 13. Application Programming Interface (API) 14. 並行性 (CON) 49. 雑則 (MSC) 50. POSIX (POS) AA. 参考情報 BB. Definitions CC. 未定義の動作 DD. 未規定の動作 XX. お問い合わせ 00はじめに このページでは、JPCERTコーディネーションセンターが翻訳を行っている CE

    CERT C コーディングスタンダード