■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50
read.cgi改良スレッド 2
- 167 :デフォルトの名無しさん :01/09/11 09:36
- zlibのを使うのなら crc32よりadler32の方が軽いみたい
% time ./test adler32
adler32 = c23cf731
1.18u 0.00s 0:01.14 103.5%
% time ./test crc32
crc32 = 7949b790
5.34u 0.01s 0:05.31 100.7%
% cat test.c
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <zlib.h>
#define FACTOR 65536
int
main(int argc, char *const *argv)
{
if (argc < 2) fprintf(stderr, "Usage: %s function\n", *argv);
else if (!strcmp("adler32", argv[1]) || !strcmp("crc32", argv[1])) {
int i, fd = open(*argv, O_RDONLY);
void *mmptr;
uLong val;
struct stat st;
uLong (*fn32)(uLong, const Bytef *, uInt) = !strcmp("crc32", argv[1])?crc32:adler32;
if (fd < 0) return -1;
fstat(fd, &st);
mmptr = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
if (mmptr == MAP_FAILED) {close(fd); return -1;}
for (i = 0; i < FACTOR; i++)
val = fn32(fn32(0, NULL, 0), mmptr, st.st_size);
munmap(mmptr, st.st_size);
close(fd);
printf("%s = %lx\n", argv[1], val);
}
else fprintf(stderr, "%s: Illegal function.\n", *argv);
return 0;
}
- 168 :167 :01/09/11 09:41
- >>166 とりあえず>>137はcrc32/adler32等によるチェックサムを実装することに
なれば そのスキームとしてETagを使うことが考えられるね
- 169 :166 :01/09/11 10:07
- ETag話は続きそうなので、思いついた後に考えた事をいくつか。
(>>134は・・・)
まず、負荷の点で、
UAがIf-None-Matchをつけてきたら、
最初に(gzipとか呼ぶ前に)ETagを調べるためだけに
datを読み、レスを走査する必要があり、これがどうなのかな、と。
まあ、304を返せないなら、どうせ全体を返す事になるから、
それと比べればぜんぜん平気なんだけど、
変更された場合には、その後もう一回出力しなくてはいけない。
それと、LastModifiedの返し方によってはLastModifiedが変更されたのに
ETagが変更されないケースが多発するわけで、
下手するとLastModifiedとNotModifiedを両方出力してしまい、
その場合はapacheがどうするか、それを受けたUAはどう扱うか。
両方出力しないようにするには、ソースの変更が結構増えそう。
それから、ETagに反応してくれるUAってのはどのくらいなのかなと。
IEが反応してくれるから、やる価値はあるけど、
反応してくれなそうなUAなら、ETag自体を吐かない手もあるかなと。
もひとつ、基本的にCHUNK_ANCHOR時に有効と考えるんだけど、
(もちろん、それ以外でも有効だけど)
レス自体に変化がなくても、総レス数等が変わり、
「新レス」「901-」等が更新されない場合が出てくるわけで。
その場合、ある程度レスが増えたら値を変えてModified扱いしないと
あまりうまくないわけで、そのあたりをどうするか。
もちろん、1-150等の場合の時間帯制限も考えると、
URIで指定されたレスではなく、
実際に出力するレスから算出しなくてはいけないし。
それに、いろいろ見ると、CHUNK_ANCHOR自体が賛否両論な気がするし。
325KB
新着レスの表示
スレッドリストへ戻る 全部 前100 次100 最新50
0ch BBS 2004-10-30