C言語におけるファイル入出力の高速化
|
|
|
- さみら ねごろ
- 9 years ago
- Views:
Transcription
1 C 言語におけるファイル入出力の高速化 東京大学情報基盤センター 黒田久泰 不連続なメモリ上のデータをファイルに保存する場合 内部バッファサイズを大きくすると実行時間が短縮できます また メモリ上に連続して配置されている大規模なデータをファイルに保存する場合には できるだけ大きなデータサイズでファイル入出力を行うことで実行時間が短縮できます ここでは これらの方法や性能について紹介します 1. 内部バッファサイズの変更方法高水準入出力関数 fopen fread fwrite fclose では内部バッファにデータを貯めておき 内部バッファが空になるか一杯になるとまとめてファイル入出力を行います 通常 この内部バッファサイズはインクルードファイル /usr/include/stdio.h の BUFSIZ で定義されている値になります 例えば SR8000/MPP では 64KB SR11000/J1 では 4KB になっています ( サンプルプログラム main.c) #include <sys/time.h> #define SIZE 256*1024*1024 int a[size][2]; double getetime() struct timeval tv; gettimeofday(&tv, NULL); return tv.tv_sec + (double)tv.tv_usec*1e-6; int i; double st,en; FILE *fp; st=getetime(); fp=fopen("a.dat","w"); for(i=0;i<size;i++) fwrite(&a[i][0],sizeof(int),1,fp); fclose(fp); en=getetime(); printf("elapsed Time=%.6f\n",en-st); このプログラムは配列 a[size][2] の半分の要素 a[0][0], a[1][0], a[2][0],, a[size-1][0] だけを抜き出してファイルに出力するプログラムです ( 出力されるファイルサイズは 1GB) getetime 関数は gettimeofday システムコールの値を double 型の秒数に変換して返す関数で en-st はファイル出力にかかった経過時間 ( 秒 ) を表します
2 このプログラムを実行すると 下記のようになります (SR8000/MPP) % cc -64 -Os -noparallel +Op main.c %./a.out ( 実際はバッチジョブ上で実行 ) Elapsed Time= (SR11000/J1) % cc -64 -Os -noparallel +Op main.c %./a.out ( 実際はバッチジョブ上で実行 ) Elapsed Time= SR8000/MPP では約 182 秒 SR11000/J1 では約 238 秒かかりました このサンプルプログラムでは 内部バッファサイズを変更することで高速化させることが可能です バッファサイズを変更するには setvbuf 関数を使用します 書式 int setvbuf(file *fp, char *buffer, int mode, size_t size); fp で示されるファイルに対して 自動的に割り当てられる入出力バッファの代わりに buffer で指定した領域を入出力バッファとして利用することを指定する size には新しく割り当てる入出力バッファのサイズを指定する buffer の値が NULL の場合には malloc を使って自動的に size 分のメモリを確保する mode には次の 3 つの内のどれかを指定する _IOFBF 入出力を完全バッファリング ( バッファを埋め尽くすと出力を行う ) _IOLBF 入出力を行バッファリング ( バッファを埋め尽くしたときと改行コードが来たときに出力を行う ) _IONBF バッファリングなし (buffer と size の値は無視される ) 例えば入出力バッファサイズを 512KB にする場合には 下記のようにコードを追加します ( 内部バッファサイズの変更を行うコードの追加 ) fp=fopen("a.dat","w"); setvbuf(fp,null,_iofbf,512*1024); この 1 行を追加 for(i=0;i<size;i++) fwrite(&a[i][0],sizeof(int),1,fp); fclose(fp); fopen 関数でファイルをオープンした後に setvbuf 関数を呼び出すことに注意してください 内部バッファサイズを 4KB から 32MB まで変えたときの実行時間は図 1 のようになります
3 実行時間 ( 秒 ) 図 1 内部バッファサイズと実行時間 SR11000/J1 SR8000/MPP 4K 8K 16K 32K 64K 128K 256K 512K 1024K 2048K 4096K 8192K 16384K SR8000/MPP では入出力バッファサイズを 512KB にすると実行時間は約 156 秒になり標準の 64KB のと きと比べて約 1.17 倍の速度向上となります 一方 SR11000/J1 では標準の入出力バッファサイズが 4KB と小さいため 512KB にすると実行時間は約 28 秒になり約 8.4 倍の速度向上となります 2. 低水準入出力関数を用いたファイル入出力低水準入出力関数である open read write close を使ってファイル入出力を行う場合 内部バッファを使わずに直接ディスクに対してファイルの読み書きを行うことができます これらはシステムコールと呼ばれ 直接 オペレーティングシステム (OS) によって処理されます 書式 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags, mode_t mode); pathname にはファイルのパス名 flags にはファイル状態フラグ mode にはファイルのアクセス属性を指定してファイルをオープンする flags の値としてよく使われるものは次のものである ただし O_RDONLY O_WRONLY O_RDWR のどれか1つは入っていなければならない O_RDONLY 読み込み専用 O_WRONLY 書き込み専用 O_RDWR 読み書き両用 O_CREAT ファイルが存在しなかった場合作成する O_APPEND 追加モードでオープンする ( ファイル ポインタをファイルの最後に移動 ) O_TRUNC ファイルが既に存在する場合に書き込みモードでオープンされている場合 ファイルの長さを 0 に切り詰める mode には下記のシンボル定数を指定する ( 新しくファイルを作成するときのみ使用される ) S_IRUSR ファイル作成者に読み込みの許可がある S_IWUSR ファイル作成者に書き込みの許可がある S_IXUSR ファイル作成者に実行の許可があるファイル作成者と同一グループの者に許可を与える場合にはそれぞれ S_IRGRP S_IWGRP S_IXGRP を指定し 他人に許可を与える場合にはそれぞれ S_IROTH S_IWOTH S_IXOTH を指定する
4 書式 #include <unistd.h> ssize_t read(int filedes, void *buffer, size_t nbytes); ssize_t write(int filedes, void *buffer, size_t nbytes); read ではデータの読み込み write ではデータの書き込みを行う filedes にはファイルディスクリプタ buffer にはデータの先頭アドレス nbytes にはデータのバイト数を指定する 書式 #include <unistd.h> int close(int filedes); filedes で示されるファイルディスクリプタをクローズする 低水準入出力関数を利用すればいつでも速くなるわけではありません 具体的にその例を示します 次の 2 つのプログラムは 大きさ 100 万の配列 a の値を 1 要素 (=4 バイト ) ずつファイルに出力するプログラムです 左のプログラムは高水準入出力関数 fopen fwrite fclose で書かれており 右のプログラムでは低水準入出力関数 open write close で書かれています (fwrite を使った場合 ) #define SIZE int a[size]; int i; FILE *fp; fp=fopen("a.dat","w"); for(i=0;i<size;i++) fwrite(&a[i],sizeof(int),1,fp); fclose(fp); (write を使った場合 ) #include <sys/types.h> #include <sys/mode.h> #include <fcntl.h> #define SIZE int a[size]; int i; int file; file=open("a.dat",o_wronly O_CREAT,S_IREAD S_IWRITE); for(i=0;i<size;i++) write(file,&a[i],sizeof(int)); close(file); どちらも cc -64 Os noparallel +Op でコンパイルして実行したところ 下記のような実行時間 になりました fwrite を使った場合 write を使った場合 SR8000/MPP 1.21 秒 秒 SR11000/J 秒 秒 このように write を使って小さいサイズの書き込みを何度も行うと 極端に遅くなってしまいます 低水準入出力関数を使う場合には できるだけ大きなサイズ単位でファイル入出力を行うように心がける必要があります
5 3. ファイルシステム para-io の利用 単一の大容量ファイルの入出力を行う場合には ファイルシステム para-io を利用すると実行時間が 短縮されます ここではファイルシステム para-io を利用して大きなサイズのファイルを出力したときの性能を紹介します 性能測定プログラムには下記のプログラムを利用しました 配列 a は double 型でデータサイズは 8GB になります この 8GB のデータを複数回に分けてファイル出力を行います ここでは低水準入出力関数を利用したプログラムを示します ( 性能測定プログラム ) #include <sys/time.h> #include <sys/types.h> #include <sys/mode.h> #include <fcntl.h> #include <unistd.h> #define SIZE 1024*1024*1024 double a[size]; double getetime() struct timeval tv; gettimeofday(&tv, NULL); return tv.tv_sec + (double)tv.tv_usec*1e-6; long long int i,bsize; double st,en; int file; 1 for(bsize=4096;bsize<=size;bsize*=2) unlink("/para-io/******/a.dat"); st=getetime(); file=open("/para-io/******/a.dat",o_wronly O_CREAT,S_IREAD S_IWRITE); 2 for(i=0;i<size/bsize;i++) write(file,&a[bsize*i],sizeof(double)*bsize); 3 close(file); en=getetime(); printf("size=%lld Elapsed Time=%.6f Rate=%.3fMB/s\n", bsize*8,en-st,(double)size*8/1024/1024/(en-st)); 4 ****** の部分にはユーザー ID を記述すること 高水準入出力関数を利用したプログラムに変更するには 1から4までをそれぞれ下記のように修正します 1 FILE *fp; 2 fp=fopen("/para-io/******/a.dat","w"); 3 fwrite(&a[bsize*i],sizeof(double),bsize,fp); 4 fclose(fp);
6 1 回に書き込むサイズを 32KB から 8GB まで増やしていったときのディスク書き込み速度のグラフを図 2 に示します MB/s 図 2 1 回に書き込むサイズとディスク書き込み速度 SR11000/J1 write SR11000/J1 fwrite SR8000/MPP write SR8000/MPP fwrite 32K 64K 128K 256K 512K 1M 2M 4M 8M 16M 32M 64M 128M 256M 512M 1G 2G 4G 8G 低水準入出力関数 write を使ったプログラムと高水準入力関数 fwrite を使ったプログラムでは 実行時間にほとんど差がありませんでした これは 内部バッファサイズと同じサイズ以上のデータを fwrite で書き込もうとした場合に 内部バッファ経由ではなく 直接 ディスクに書き込む処理を行っているからだと考えられます そのため 低水準入出力関数を使用しなくても 高水準入出力関数を使えば十分な性能が得られることになります ファイルシステム para-io を使う場合 1 回に書き込むサイズを 8MB 以上になるようにすれば SR8000/MPP では約 170MB/s SR11000/J1 では約 420MB/s という転送速度になります 補足事項 1. SR11000/J1 では 仕様により fwrite で 2GB 以上のデータを一度に書き込もうとすると失敗します fwrite(a,sizeof(double),bsize,fp); のように書かれている部分を write(fileno(fp),a,sizeof(double)*bsize); のように write に書き換えると 2GB 以上のデータも書き込むことができるようになります fileno はファイルハンドルに対応するファイルディスクリプタを返すマクロ関数です 2. fwrite で内部バッファサイズを超えるデータをファイルに出力する場合 内部バッファサイズ単位毎にデータを内部バッファにコピーしてファイル出力を行うか あるいは 内部バッファを経由せずに直接データ全体を出力するかはシステムに依存します これらはシステムコール追跡コマンドで open システムコールの呼び出し部分を解析することで調べることができます システムコール追跡コマンドは SR11000/J1 では truss FreeBSD であれば ktrace Linux であれば strace というコマンド名になります
ファイル入出力と プロセス間通信 \(1\)
ファイル入出力と プロセス間通信 (1) 2004 年 12 月 10 日 海谷治彦 1 目次 まずはマニュアルをみよう. 2 章システムコールインタフェース 3 章汎用関数定義 アンバッファー化入出力 (Unbuffered I/O) open, read, write... lseek, dup... 標準入出力ライブラリ fopen, fscanf, fprintf... 標準入力, 標準出力,
ファイル入出力
C プログラミング Ⅱ の基礎 とは ファイルへデータを書き込んだり ( 出力 ), ファイルからデータを読み込んだり ( 入力 ) する C 言語では キーボードからの入力 画面への出力と同じようなコードで 処理を実現できる プログラム 入力 出力 ファイル 出力 入力 2 入出力の基本 ストリーム プログラム上で様々な装置への入出力を行う機構様々な入出力装置を統一的な方法で扱うことができる ハードディスクなどではファイルデータによって入出力が行われる
Microsoft Word - Cプログラミング演習(10)
第 10 回 (6/25) 3. ファイルとその応用 (3) ファイルの更新 シーケンシャルファイルの更新 シーケンシャルファイルでは, 各レコードが可変長で連続して格納されており, その中の特定のレコードを変更することができない そこで一般的には, マスタファイルからデータを取り出し, 更新処理を行ったあとに新マスタファイルに書き込む 注 ) マスタファイル : 主ファイル, 基本ファイルと呼ばれるファイルで内容は比較的固定的であり,
02: 変数と標準入出力
C プログラミング入門 基幹 7 ( 水 5) 1 10: ファイル入出力 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/teachers/w48369 2/CPR1/ 2016-06-15 今日の内容 2 標準ライブラリ関数によりファイルの出力を行う画像ファイルの生成を例題として 配列の作成を復習する 文字列の扱いを復習する
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき
memo
数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int
Taro-ファイル処理(公開版).jtd
ファイル処理 0. 目次 1. はじめに 2. ファイル内容の表示 3. ファイル内容の複写 3. 1 文字単位 3. 2 行単位 4. 書式付き入出力 5. 文字配列への入出力 6. 課題 6. 1 課題 1 ( ファイル圧縮 復元 ) - 1 - 1. はじめに ファイル処理プログラムの形は次のようになる #include main() { FILE *fp1,*fp2; ファイルポインタの宣言
C言語講座 ~ファイル入出力編~
C 言語講座 ~ ファイル入出力編 ~ ポインタ使います 例 2 練習問題 3 初めに プログラムを組む上での話と今回の演習について 例えばこの画面の場合 背景の動画の描写 ノーツを流れてくるようにする ボタンを押したら違反亭ライン近くのノーツは消えるようにする処理 曲の難易度ごとに判定を追加とか残りの処理 完成 演習 1 クリア 演習 2 クリア 過程は各自で考えてください 演習 3 クリア ファイルの出入力でこれからやること
PowerPoint Presentation
工学部 6 7 8 9 10 組 ( 奇数学籍番号 ) 担当 : 長谷川英之 情報処理演習 第 7 回 2010 年 11 月 18 日 1 今回のテーマ 1: ポインタ 変数に値を代入 = 記憶プログラムの記憶領域として使用されるものがメモリ ( パソコンの仕様書における 512 MB RAM などの記述はこのメモリの量 ) RAM は多数のコンデンサの集合体 : 電荷がたまっている (1)/ いない
情報処理演習 B8クラス
予定スケジュール ( 全 15 回 ) 1 1. 終了 プログラミング言語の基礎 2. 終了 演算と型 3. 終了 プログラムの流れの分岐 (if 文,switch 文など ) 4. 終了 プログラムの流れの繰返し (do, while, for 文など ) 5. 終了 中間レポート1 6. 終了 配列 7. 終了 関数 8. 終了 文字列 ( 文字列の配列, 文字列の操作 ) 9. 終了 ポインタ
PowerPoint プレゼンテーション
プログラミング応用演習 第 3 回構造体, ファイル入出力 先週の出席確認へのコメント 暗号を破りたいが 平文の候補が多すぎる 人間の目で確認する代わりに どんなプログラムがあればよいか? 辞書を挙げた人が多かった 正しい着眼です 何億個もの平文候補が想定されるので 形態素解析や品詞判別を挙げた人もいます 辞書に近い回答で悪くはないのですが 平文候補ごとにあまり高機能なものを呼び出すと時間がかかる
FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り
FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作ります FORTRAN の場合 OPEN 文でファイルを開いた後 標準入力の場合と同様に READ 文でデータを読みこみます
RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用
RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用体型のローカル変数を文字列操作関数で操作する場合の注意事項 (RXC#013) 配列型構造体または共用体の配列型メンバから読み出した値を動的初期化に用いる場合の注意事項
Microsoft PowerPoint - prog04.ppt
プログラミング言語 2 第 04 回 (2007 年 05 月 14 日 ) 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 1 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/language/ にアクセスすると 教材があります 2007 年 05 月 14 日分と書いてある部分が 本日の教材です 本日の内容
PowerPoint Presentation
ファイルの入出力 芝浦工業大学情報工学科 青木義満 今回の講義内容 ファイル入出力 ファイルからのデータ読込み ファイルと配列 2 1 ファイルへのデータ書き込み ( 復習 ) ソースファイル名 :fileio1.c データをファイルに書き込み #include int main(void) { ファイルポインタ宣言 int student_id = 100; char name[
02: 変数と標準入出力
C プログラミング入門 基幹 2 ( 月 4) 11: 動的メモリ確保 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2014-06-22 1 まとめ : ポインタを使った処理 内容 説明 呼び出し元の変数を書き換える第 9 回 文字列を渡す 配列を渡す 第 10 回 ファイルポインタ
PowerPoint プレゼンテーション
プログラミング応用演習 第 4 回再帰的構造体 プログラミングを 余談 : 教えることの難しさ 丁寧に説明しないと分かってもらえない 説明すると 小難しくなる学生が目指すべきところプログラム例を説明されて理解できる違うやり方でも良いので自力で解決できる おっけー 動けば良い という意識でプログラミング 正しく動くことのチェックは必要 解答例と自分のやり方との比較が勉強になる 今日のお題 再帰的構造体
バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科
バイオプログラミング第 1 榊原康文 佐藤健吾 慶應義塾大学理工学部生命情報学科 ポインタ変数の扱い方 1 ポインタ変数の宣言 int *p; double *q; 2 ポインタ変数へのアドレスの代入 int *p; と宣言した時,p がポインタ変数 int x; と普通に宣言した変数に対して, p = &x; は x のアドレスのポインタ変数 p への代入 ポインタ変数の扱い方 3 間接参照 (
PowerPoint プレゼンテーション
講座準備 講座資料は次の URL から DL 可能 https://goo.gl/jnrfth 1 ポインタ講座 2017/01/06,09 fumi 2 はじめに ポインタはC 言語において理解が難しいとされる そのポインタを理解することを目的とする 講座は1 日で行うので 詳しいことは調べること 3 はじめに みなさん復習はしましたか? 4 & 演算子 & 演算子を使うと 変数のアドレスが得られる
Microsoft Word - no15.docx
7. ファイルいままでは プログラムを実行したとき その結果を画面で確認していました 簡単なものならそれでもいいのですか 複雑な結果は画面で見るだけでなく ファイルに保存できればよいでしょう ここでは このファイルについて説明します 使う関数のプロトタイプは次のとおりです FILE *fopen(const char *filename, const char *mode); ファイルを読み書きできるようにする
AquesTalk2 Win マニュアル
株式会社 AQUEST http://www.a-quest.com/ AquesTalk2 Win Manual 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk2 Win をアプリケーションに組み込んで使用するためのプログラミングに関しての方法および注意点を示したものです AquesTalk2 は 簡単に小型機器への組み込みが出来る音声合成ミドルウェアです このライブラリを用いることで
AquesTalk プログラミングガイド
AquesTalk プログラミングガイド ( 株 ) アクエスト 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと サウンドデバイスに出力する 2 種類があります 使用するアプリケーションに応じて選択してください
PowerPoint プレゼンテーション
プログラミング応用演習 第 5 回演習 前回までのお話 ポインタ ポインタを用いた文字列処理 構造体 ファイル 再帰的構造体 リスト構造 動的メモリ管理 今日のお題 ポインタやファイルなど これまでの内容の練習 教材 以前 以下に単語を収録したファイルがあることを紹介した : /usr/share/dict/words この中からランダムに単語を取り出したファイルを用意した http://sun.ac.jp/prof/yamagu/2019app/
PowerPoint プレゼンテーション
部内向けスキルアップ研修 組込み OS 自作入門 2014 年 2 月 10st ステップ担当 : 中村 目次 はじめに OSの役割 メモリ管理 メモリ管理実装 プログラムの実行 まとめ はじめに 前回やったこと OS の原型を作成 今回やること 9th ステップでは CPU 時間 という資源管理 本ステップでは メモリ という資源管理 10.1 OS の役割 10.1.1 コンピュータの 3 大要素
プログラミング及び演習 第1回 講義概容・実行制御
プログラミング及び演習 第 6 回ファイル ( 教科書第 9 章 ) (2014/05/23) 講義担当情報連携統轄本部情報戦略室大学院情報科学研究科メディア科学専攻教授森健策 本日の講義 演習の内容 ファイル第 9 章 講義 演習ホームページ http://www.newves.org/~mori/14programming ところで, 現在までに教科書第 1-8 章を終了 段々難しくなっていると思いますか?
AquesTalk Win Manual
AquesTalk Win マニュアル 株式会社アクエスト http://www.a-quest.com/ 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと サウンドデバイスに出力する 2
Microsoft Word - appendix_b_srft.doc
付録 B 高速ファイル転送ソフト SRFT について 1 SRFT とは 本センターに導入されている SR11000 では ファイルシステムとして主に HSFS が使用されています このファイルシステムは最適化されたプログラムが大量のデータを扱うときには高い性能を発揮しますが HSFS の特性を考慮していない一般のプログラムでは本来の性能は得られません ファイル転送に使用する SCP は HSFS
02: 変数と標準入出力
C プログラミング入門 総機 1 ( 月 1) 11: 動的メモリ確保 Linux にログインし 以下の講義ページを開いておくこと http://www-it.sci.waseda.ac.jp/ teachers/w483692/cpr1/ 2015-06-22 1 まとめ : ポインタを使った処理 内容 説明 呼び出し元の変数を書き換える第 9 回 文字列を渡す 配列を渡す 第 10 回 ファイルポインタ
Microsoft PowerPoint - 14th.ppt [互換モード]
工学部 6 7 8 9 10 組 ( 奇数学籍番号 ) 担当 : 長谷川英之 情報処理演習 第 14 回 2011 年 1 月 20 日 1 今日のテーマ ファイル入出力 ですが, キーボード入力などもおさらいします 2 標準入力 キーボードで入力 : 標準入力という例 )scanf( %d,&i) 前回までの講義でファイルからデータを読み込む場合に使用した関数 : fscanf 例 )fscanf(fin,
第1回 プログラミング演習3 センサーアプリケーション
C プログラミング - ポインタなんて恐くない! - 藤田悟 [email protected] 目標 C 言語プログラムとメモリ ポインタの関係を深く理解する C 言語プログラムは メモリを素のまま利用できます これが原因のエラーが多く発生します メモリマップをよく頭にいれて ポインタの動きを理解できれば C 言語もこわくありません 1. ポインタ入門編 ディレクトリの作成と移動 mkdir
メモリ管理
ファイルシステム API と メモリマップドファイル ファイルシステムの役割 (1) 様々な種類の 2 次記憶装置へ, 簡便で 効率的で 安全で 統一的な ( 装置によらない ) 読み書き手段を提供する ファイルシステムの役割 (2) 電源を切っても失われない情報の ( ほとんど唯一の ) 格納場所 メモリの内容は電源を切ると失われる プロセス間で情報を共有する自然な場所 プロセス間でメモリは分離されていた
Microsoft Word - Cプログラミング演習(12)
第 12 回 (7/9) 4. いくつかのトピック (5)main 関数の引数を利用したファイル処理 main 関数は, 起動する環境から引数を受け取ることができる 例えば 次に示すように,main 関数に引数を用いたプログラムを作成する 01 /* sample */ 02 /* main 関数の引数 */ 03 #include 04 05 main(int argc, char
Taro-ポインタ変数Ⅰ(公開版).j
0. 目次 1. ポインタ変数と変数 2. ポインタ変数と配列 3. ポインタ変数と構造体 4. ポインタ変数と線形リスト 5. 問題 問題 1 問題 2-1 - 1. ポインタ変数と変数 ポインタ変数には 記憶領域の番地が格納されている 通常の変数にはデータが格納されている 宣言 int *a; float *b; char *c; 意味ポインタ変数 aは 整数型データが保存されている番地を格納している
格子点データの解析 1 月平均全球客観解析データの解析 客観解析データや衛星観測データのような格子点データは バイナリ形式のデータファイルに記録されていることが多いです バイナリ形式のデータファイルは テキスト形式の場合とは異なり 直接中身を見ることができません プログラムを書いてデータを読み出して
格子点データの解析 1 月平均全球客観解析データの解析 客観解析データや衛星観測データのような格子点データは バイナリ形式のデータファイルに記録されていることが多いです バイナリ形式のデータファイルは テキスト形式の場合とは異なり 直接中身を見ることができません プログラムを書いてデータを読み出して解析するのが普通です ここでは 全球客観解析データを用いてバイナリ形式のファイルに記録された格子点データの解析について学びたいと思います
TFTP serverの実装
TFTP サーバーの実装 デジタルビジョンソリューション 佐藤史明 1 1 プレゼンのテーマ組み込みソフトのファイル転送を容易に 2 3 4 5 基礎知識 TFTP とは 実践 1 実際に作ってみよう 実践 2 組み込みソフトでの実装案 最後におさらい 2 プレゼンのテーマ 組み込みソフトのファイル転送を容易に テーマ選択の理由 現在従事しているプロジェクトで お客様からファームウェアなどのファイル転送を独自方式からTFTPに変更したいと要望があった
1 C STL(1) C C C libc C C C++ STL(Standard Template Library ) libc libc C++ C STL libc STL iostream Algorithm libc STL string vector l
C/C++ 2007 6 18 1 C STL(1) 2 1.1............................................... 2 1.2 stdio................................................ 3 1.3.......................................... 10 2 11 2.1 sizeof......................................
ファイル操作-バイナリファイル
ファイル操作 バイナリ ファイルを読み書きする バイナリファイル ( 即ちテキストファイル以外のファイル ) を読み書きするには FileStream クラス (System.IO 名前空間 ) を利用する FileStream クラスはファイル用のストリームをサポートするクラスで有り Stream クラス (System.IO 名前空間 ) の派生クラスの 1 つで有る 基本的には コンストラクタで指定したファイルのストリームに対して
Microsoft PowerPoint - prog06.ppt
プログラミング言語 2 第 06 回 (2007 年 06 月 11 日 ) 今日の配布物 片面の用紙 1 枚 今日の課題が書かれています 本日の出欠を兼ねています 1 今日やること http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/language/ にアクセスすると 教材があります 2007 年 06 月 11 日分と書いてある部分が 本日の教材です 本日の内容
ikuo/enshu/keisanki/ GUI(Graphica
2008 ([email protected]) http://www.jsk.t.u-tokyo.ac.jp/ http://www.jsk.t.u-tokyo.ac.jp/ ikuo/enshu/keisanki/ 2008 5 16 6 23 1 2 1 GUI(Graphical User Interface) 2 2.1 CD USB ( LSI ) (hardware abstraction)
プログラミング実習I
プログラミング実習 I 05 関数 (1) 人間システム工学科井村誠孝 [email protected] 関数とは p.162 数学的には入力に対して出力が決まるもの C 言語では入出力が定まったひとまとまりの処理 入力や出力はあるときもないときもある main() も関数の一種 何かの仕事をこなしてくれる魔法のブラックボックス 例 : printf() 関数中で行われている処理の詳細を使う側は知らないが,
プログラミングI第10回
プログラミング 1 第 10 回 構造体 (3) 応用 リスト操作 この資料にあるサンプルプログラムは /home/course/prog1/public_html/2007/hw/lec/sources/ 下に置いてありますから 各自自分のディレクトリにコピーして コンパイル 実行してみてください Prog1 2007 Lec 101 Programming1 Group 19992007 データ構造
04-process_thread_2.ppt
オペレーティングシステム ~ 保護とシステムコール ~ 山田浩史 hiroshiy @ cc.tuat.ac.jp 2015/05/08 復習 : OS の目的 ( 今回の話題 ) 裸のコンピュータを抽象化 (abstraction) し より使いやすく安全なコンピュータとして見せること OS はハードウェアを制御し アプリケーションの効率的な動作や容易な開発を支援する OS がないと 1 つしかプログラムが動作しない
画像ファイルを扱う これまでに学んだ条件分岐, 繰り返し, 配列, ファイル入出力を使って, 画像を扱うプログラムにチャレンジしてみよう
第 14 回 応用 情報処理演習 ( テキスト : 第 10 章 ) 画像ファイルを扱う これまでに学んだ条件分岐, 繰り返し, 配列, ファイル入出力を使って, 画像を扱うプログラムにチャレンジしてみよう 特定色の画素の検出 ( テキスト 134 ページ ) 画像データが保存されているファイルを読み込んで, 特定色の画素の位置を検出するプログラムを作成しなさい 元画像生成画像 ( 結果の画像 )
Microsoft PowerPoint - CproNt02.ppt [互換モード]
第 2 章 C プログラムの書き方 CPro:02-01 概要 C プログラムの構成要素は関数 ( プログラム = 関数の集まり ) 関数は, ヘッダと本体からなる 使用する関数は, プログラムの先頭 ( 厳密には, 使用場所より前 ) で型宣言 ( プロトタイプ宣言 ) する 関数は仮引数を用いることができる ( なくてもよい ) 関数には戻り値がある ( なくてもよい void 型 ) コメント
演算増幅器
ネットワークプログラミングの続き前回はチャットを行うプログラムを作成し ネットワークを利用したプログラミングの基本について学んだ 本日は 前回作成したプログラムを改良していく 具体的には 以下の2つの項目について習っていく ホスト名や IP アドレスの取得の方法 fork() システムコールを使い 子プロセスを作成する方法 チャットプログラムの改良 前回のプログラムを以下のように改良していく 太字部分が変更部分である
Microsoft PowerPoint ppt
基礎演習 3 C 言語の基礎 (5) 第 05 回 (20 年 07 月 07 日 ) メモリとポインタの概念 ビットとバイト 計算機内部では データは2 進数で保存している 計算機は メモリにデータを蓄えている bit 1bit 0 もしくは 1 のどちらかを保存 byte 1byte 1bitが8つ集まっている byte が メモリの基本単位として使用される メモリとアドレス メモリは 1byte
AquesTalk for WinCE プログラミングガイド
AquesTalk for WinCE プログラミングガイド ( 株 ) アクエスト 1. 概要 本文書は 規則音声合成ライブラリ AquesTalk for WinCE ( 以下 AquesTalk) をアプリケーションに組み込んで使用するためのプログラミングに関して 方法および注意点を示したものです AquesTalk には 2 種類のライブラリがあります 音声データをメモリ上に生成するものと
ERDAS IMAGINE における処理速度の向上 株式会社ベストシステムズ PASCO CORPORATION 2015
ERDAS IMAGINE における処理速度の向上 株式会社ベストシステムズ 本セッションの目的 本セッションでは ERDAS IMAGINEにおける処理速度向上を目的として機器 (SSD 等 ) 及び並列処理の比較 検討を行った 1.SSD 及び RAMDISK を利用した処理速度の検証 2.Condorによる複数 PCを用いた並列処理 2.1 分散並列処理による高速化試験 (ERDAS IMAGINEのCondorを使用した試験
ユーザーズマニュアル
データ圧縮ライブラリ ESLC for Windows ユーザーズマニュアル 03 版 富士通エレクトロニクス株式会社 はじめに 対象読者 本マニュアルは C 言語の知識がある技術者の方を対象に記述しています 著作権 ESLC for Windows の著作権は富士通エレクトロニクス株式会社が保有しています 商標 Microsoft Windows Windows Server Visual Studio
