summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordotdotisdead <dotdotisdead@a3eca27d-f21b-0410-9b4a-6511e771f64e>2007-01-11 07:51:58 +0000
committerdotdotisdead <dotdotisdead@a3eca27d-f21b-0410-9b4a-6511e771f64e>2007-01-11 07:51:58 +0000
commitd0e3d3e2b35bf442277d2e1b9901df6ce4bdcee9 (patch)
tree1041138eb5a5175b5fffd7ecc8c89819be9f4943
parentdd34abf7bac54838473e24d2f8c7eec62646a8cd (diff)
Testing random configurations to update xdelta3-cfgs.h, preliminary.
-rwxr-xr-xxdelta3/xdelta3-regtest.py59
-rwxr-xr-xxdelta3/xdelta3.c2
-rwxr-xr-xxdelta3/xdelta3.h1
3 files changed, 40 insertions, 22 deletions
diff --git a/xdelta3/xdelta3-regtest.py b/xdelta3/xdelta3-regtest.py
index bf1693d..fdebffe 100755
--- a/xdelta3/xdelta3-regtest.py
+++ b/xdelta3/xdelta3-regtest.py
@@ -593,14 +593,15 @@ def BigFileRun(f1, f2):
593 testcases = [ 593 testcases = [
594 # large_look large_step small_look small_chain small_lchain 594 # large_look large_step small_look small_chain small_lchain
595 # ssmatch try_lazy max_lazy long_enough promote 595 # ssmatch try_lazy max_lazy long_enough promote
596 ['-DC', '16,32,4,2,2,1,0,0,64,0'], 596 ['-DC', '9,7,4,8,1,1,1,16,114,0'],
597 ['-DC', '24,32,4,2,2,1,0,0,64,0'], 597 ['-DC', '9,6,4,8,1,1,1,16,114,0'],
598 ['-DC', '32,32,4,2,2,1,0,0,64,0'], 598 ['-DC', '9,5,4,8,1,1,1,16,114,0'],
599 ['-DC', '9,4,4,8,1,1,1,16,114,0'],
599 ] 600 ]
600 601
601 for test in testcases: 602 for test in testcases:
602 runner = Xdelta3Pair() 603 runner = Xdelta3Pair()
603 runner.extra = ['-DC', test] 604 runner.extra = test
604 result = TimeRun(runner.Runner(f1, 1, f2, 2)) 605 result = TimeRun(runner.Runner(f1, 1, f2, 2))
605 606
606 print 'test %s dsize %d: time %.7f: in %u/%u trials' % \ 607 print 'test %s dsize %d: time %.7f: in %u/%u trials' % \
@@ -615,34 +616,45 @@ def BigFileRun(f1, f2):
615def RandomBigRun(f1, f2): 616def RandomBigRun(f1, f2):
616 617
617 input_ranges = [ 618 input_ranges = [
618 (8, 32, 4), 619 (7, 13, 'large_look'),
619 (8, 64, 8), 620 (1, 50, 'large_step'),
620 (4, 6, 1), 621 (4, 6, 'small_look'),
621 (1, 8, 1), 622 (1, 10, 'small_chain'),
622 (1, 4, 1), 623 (1, 5, 'small_lchain'),
623 (0, 1, 1), 624 (0, 0, 'ssmatch'),
624 (0, 1, 1), 625 (0, 1, 'trylazy'),
625 (8, 128, 32), 626 (1, 32, 'max_lazy'),
626 (8, 128, 32), 627 (1, 64, 'long_enough'),
627 (0, 1, 1), 628 (0, 1, 'promote'),
628 ] 629 ]
629 630
630 config = [] 631 config = []
631 rand = random.Random() 632 rand = random.Random()
633 map = {}
632 634
633 for input in input_ranges: 635 for input in input_ranges:
634 config.append(str(rand.randrange(input[0], input[1] + 1, input[2]))) 636 x = rand.randrange(input[0], input[1] + 1)
637 config.append(x)
638 map[input[2]] = x
639 #end
640
641 if map['small_chain'] < map['small_lchain']:
642 return
643
644 if map['large_look'] < map['small_look']:
645 return
646
647 strs = [str(x) for x in config]
635 648
636 runner = Xdelta3Pair() 649 runner = Xdelta3Pair()
637 runner.extra = ['-DC', ','.join(config)] 650 runner.extra = ['-DC', ','.join(strs)]
638 result = TimeRun(runner.Runner(f1, 1, f2, 2)) 651 result = TimeRun(runner.Runner(f1, 1, f2, 2))
639 652
640 print 'test %s dsize %d: time %.7f: in %u/%u trials' % \ 653 print 'config %s dsize %d time %.7f in %u trials' % \
641 (','.join(config), 654 (' '.join(strs),
642 result.r1.dsize, 655 result.r1.dsize,
643 result.time.mean, 656 result.time.mean,
644 result.trials, 657 result.trials)
645 result.reps)
646 658
647def RunSpeed(): 659def RunSpeed():
648 for L in Decimals(MAX_RUN): 660 for L in Decimals(MAX_RUN):
@@ -661,7 +673,12 @@ if __name__ == "__main__":
661 #BigFileRuns(rcsf) 673 #BigFileRuns(rcsf)
662 #BigFileRun("/tmp/big.1", "/tmp/big.2") 674 #BigFileRun("/tmp/big.1", "/tmp/big.2")
663 while 1: 675 while 1:
664 RandomBigRun("/tmp/big.1", "/tmp/big.2") 676 try:
677 RandomBigRun("/tmp/big.1", "/tmp/big.2")
678 except CommandError, e:
679 pass
680 #end
681 #end
665 except CommandError: 682 except CommandError:
666 pass 683 pass
667 else: 684 else:
diff --git a/xdelta3/xdelta3.c b/xdelta3/xdelta3.c
index 146fc37..9d6c3b6 100755
--- a/xdelta3/xdelta3.c
+++ b/xdelta3/xdelta3.c
@@ -2533,7 +2533,7 @@ xd3_config_stream(xd3_stream *stream,
2533 (smatcher->small_lchain == 0 && smatcher->try_lazy)) 2533 (smatcher->small_lchain == 0 && smatcher->try_lazy))
2534 { 2534 {
2535 stream->msg = "invalid soft string-match config"; 2535 stream->msg = "invalid soft string-match config";
2536 return XD3_INTERNAL; 2536 return XD3_INVALID;
2537 } 2537 }
2538 break; 2538 break;
2539 }) 2539 })
diff --git a/xdelta3/xdelta3.h b/xdelta3/xdelta3.h
index e06a927..2ae1273 100755
--- a/xdelta3/xdelta3.h
+++ b/xdelta3/xdelta3.h
@@ -285,6 +285,7 @@ typedef enum {
285 XD3_WINFINISH = -17708, /* notification: returned after encode/decode & output for a window */ 285 XD3_WINFINISH = -17708, /* notification: returned after encode/decode & output for a window */
286 XD3_TOOFARBACK = -17709, /* (encoder only) may be returned by getblk() if the block is too old */ 286 XD3_TOOFARBACK = -17709, /* (encoder only) may be returned by getblk() if the block is too old */
287 XD3_INTERNAL = -17710, /* internal error */ 287 XD3_INTERNAL = -17710, /* internal error */
288 XD3_INVALID = -17711, /* invalid config */
288 289
289} xd3_rvalues; 290} xd3_rvalues;
290 291