瀏覽代碼

swap: fix loop offset

David Marec 5 月之前
父節點
當前提交
b1ab2ca615
共有 2 個文件被更改,包括 20 次插入4 次删除
  1. 19 3
      swap/README.md
  2. 1 1
      swap/swap16.c

+ 19 - 3
swap/README.md

@@ -1,32 +1,48 @@
 # inplace Swap bytes
 
-Echange d'octects 2 par 2 sur un fichier, en utilisant les _intrinsics_.
+Echange d'octets 2 par 2 sur un fichier, en utilisant les _intrinsics_.
 
 
 Sur un fichier texte:
-
 ```sh
  echo '0123456789ABCDEF' > alpha
  ./swap16 --input alpha
 Parsing:       17B.
 Swab   :  0.000 ms.
  cat alpha
-1023546798ABDCEF%
+1032547698BADCFE%
 ```
 
 Sur un fichier plus épais:
 ```sh
  dd if=/dev/urandom of=/tmp/r.dummy bs=4M count=100
+
  cp /tmp/r.dummy /tmp/r.true
+
  ./swap16 --input /tmp/r.dummy
 Parsing:       400M.
 Swab   :  46.875 ms.
+
  cmp /tmp/r.dummy /tmp/r.true
 /tmp/r.dummy /tmp/r.true differ: char 1, line 1
+
  ./swap16 --input /tmp/r.dummy
 Parsing:       400M.
 Swab   :  46.875 ms.
+
  cmp /tmp/r.dummy /tmp/r.true
 ```
 
+comparison avec `dd`:
+```sh
+ dd if=/tmp/r.true of=/tmp/r.dd conv=swab
+819200+0 records in
+819200+0 records out
+419430400 bytes transferred in 0.501462 secs (836414929 bytes/sec)
+
+ cmp /tmp/r.dummy /tmp/r.dd
+
+```
+
+Notez que `dd` est beaucoup fois plus lent.
 

+ 1 - 1
swap/swap16.c

@@ -113,7 +113,7 @@ int main(int argc, char *argv[])
 	clock_t t1, t0;
 
 	t0 = clock();
-	for (;sb < sbmax; sb+=sizeof(u_int16_t))
+	for (;sb < sbmax; sb++)
 		*(sb)=swab16(*sb);
 	t1 = clock();
 	printf("Swab   : %6.3f ms.\n", 1000.0 * (double)(t1 - t0) / CLOCKS_PER_SEC);