teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2021/07/21 03:07

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -1,3 +1,5 @@
1
+ **(下部に訂正あり)**
2
+
1
3
  `window` の意味は,大雑把に言うと「圧縮する単位」です。圧縮処理を行うためにはストリームから読み出してメモリ上にデータを乗せる必要がありますが,1回の圧縮のためにメモリ上に読み出す最大量を示していると思います。
2
4
 
3
5
  2の対数としての表現なので
@@ -19,4 +21,13 @@
19
21
  2^15 (bytes) = 32768 (bytes) = 32 (KiB) ≒ 33 (KB)
20
22
  ```
21
23
 
22
- 圧縮単位としては妥当な感じじゃないでしょうか?エラーにならずに動いている理由まではわかりませんが,少なくとも 8 から 15 の範囲から外れた値を指定したときの動作は保証しないと言っているように見えます…
24
+ 圧縮単位としては妥当な感じじゃないでしょうか?エラーにならずに動いている理由まではわかりませんが,少なくとも 8 から 15 の範囲から外れた値を指定したときの動作は保証しないと言っているように見えます…
25
+
26
+ #### 【追記 & 訂正】
27
+
28
+ 見るファイル間違ってました,すいません。ストリームフィルタはこちらですね。
29
+
30
+ - [https://github.com/php/php-src/blob/01b3fc03c30c6cb85038250bb5640be3a09c6a32/ext/zlib/zlib_filter.c#L327](https://github.com/php/php-src/blob/01b3fc03c30c6cb85038250bb5640be3a09c6a32/ext/zlib/zlib_filter.c#L327)
31
+
32
+ コメントを見た感じだと **9 から 15** の想定に見えますが…
33
+ (その下の MAX_WBITS を使った if 文の意味がイマイチよく分かってない)

1

spacing

2021/07/21 03:07

投稿

mpyw
mpyw

スコア5223

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  2の対数としての表現なので
4
4
 
5
5
  ```
6
- 2^32 (bytes) = 4294967296 (bytes) = 4 (GiB) ≒ 4.3(GB)
6
+ 2^32 (bytes) = 4294967296 (bytes) = 4 (GiB) ≒ 4.3 (GB)
7
7
  ```
8
8
 
9
9
  となりますが, 4GB もメモリを使っていいんでしょうかね?ストリーム圧縮にしては体感的に載せすぎなイメージがあります…