webサーバーベンチマーク用に作ってみた3KBランダム英数字プログラム(Not CGI
大学の研究室で作ったWebサーバーのベンチを取るためにランダム英数字を表示するだけのプログラムを作ってみた。
ロジックはとっても簡単だけどPerlやJavaでやるよりもCのほうが速度がでるのでCで作ったっていうだけ。
これは一応3KB(= 3072byte )分の文字列。(1KB = 1024 byte = 英数字1024文字 より。
スタンドアロンなのでそのままコンパイルして、静的CGIでベンチを取るときは
間にリダイレクトした文字列をこぴぺしたらおk。任意のnB分の文字列がほしいときは moji[]の数値をいじればおk
以下ソースコード。
#include
#include
#include
unsigned char moji[3072]; //3KB分の文字数を定義
int i = 0; //ループ用整数
int j = 0; //字数カウント用整数
//moji[]に数値を代入する関数
void addstr(int a){
moji[j] = a;
j++;
}
int main(){
int a = 0; //発生乱数格納用整数
srand((unsigned) time(NULL));//乱数系列の変更
/* Asciiコードで英数字は以下のとおり
数字文字 0~9:10進の48~57 と対応
アルファベット文字 A~Z:10進 65~90 と対応
アルファベット文字 a~Z:10進 97~122 と対応
*/
/* 乱数で発生した数値を英数字にするためには
1.発生した乱数を122通りにする。(122で割って1を足す)
2.もしその数値が上記の範囲内なら次へ。範囲外なら無視
3.数値をAsciiコードに則って文字に変換
(printfで表示する際に %d ではなく %c にしたらおk)
4.文字列にするsprintfという方法もないわけでは無い。
*/
//1~122の乱数を発生
for (i = 1 ; j < 3074 ; i++){
a = rand() % 122 + 1;
//この時点で a には1~122の数値が格納されている。
if(a >= 48 && a <= 57){
addstr(a);
}
if(a >= 65 && a <= 90){
addstr(a);
}
if(a >=97 && a <= 122){
addstr(a);
}
}
j = 0; // 1文字目へ
for (i = 0 ; j < 3074 ; i ++){
printf(“%c”,moji[j]); //文字を表示
j++;//次の文字へ
if(i == 79) {
printf(“\n”); //80文字目で改行
i=0;
}
}
return 0;
}
SECRET: 0
PASS: 74be16979710d4c4e7c6647856088456
福大の3年生はもう研究室配属されているの???