Skip to content

Instantly share code, notes, and snippets.

@halcat0x15a
Created September 4, 2012 23:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save halcat0x15a/3627818 to your computer and use it in GitHub Desktop.
Save halcat0x15a/3627818 to your computer and use it in GitHub Desktop.
bench-insert=> (bench insert-zipper (zip/vector-zip []) 1000)
"Elapsed time: 306.185331 msecs"
[[181 558 125 742 420 462 193 689 845 8 335 906 73 702 329 554 37 436 633 140 846 941 496 739 281 737 735 175 397 153 732 372 656 84 19 297 810 220 484 274 495
313 884 797 567 593 366 659 13 400 691 653 415 245 690 18 497 454 75 728 852 564 468 70 615 612 965 987 980 486 671 266 654 20 250 413 544 503 777 270 50 202
977 323 406 606 80 635 955 385 663 90 392 433 783 641 30 214 947 156 470 718 467 439 628 135 197 917 540 312 278 238 499 465 509 758 717 111 913 207 374 780 60
2 186 145 803 273 956 218 827 441 657 621 114 267 215 376 666 548 17 650 440 464 932 799 525 311 46 35 569 430 696 322 651 713 421 898 60 449 263 553 217 353 6
8 142 922 450 173 741 859 704 792 935 820 970 27 480 861 879 871 176 242 831 578 187 318 757 96 190 707 15 672 950 209 150 53 679 240 620 87 74 508 269 336 310
727 110 547 936 228 85 219 964 573 399 882 103 616 256 396 9 841 91 314 502 909 54 350 308 755 610 171 501 221 21 2 6 716 348 878 386 337 798 557 327 738 62 3
19 178 309 864 301 129 953 105 11 519 836 411 885 367 23 937 443 394 768 594 288 167 133 870 64 258 537 873 412 401 687 639 623 725 705 143 51 849 762 7 693 338 448 342 563 940 159 907 212 425 86 49 409 543 597 877 98 782 185 596 875 726 745 223 435 584 999 795 695 155 368 586 862 57 960 887 756 994 315 78 581 746 667 681 839 900 198 44 170 161 99 601 227 152 990 821 92 222 276 183 866 260 840 951 77 813 475 67 943 976 466 640 770 285 763 802 453 968 166 88 320 764 948 905 814 247 858 588 851 562 682 444 834 379 473 570 734 863 614 339 658 384 115 505 244 894 147 972 121 649 642 754 847 536 749 500 791 56 307 438 974 785 134 662 184 24 886 132 304 660 824 637 434 535 494 867 211 290 131 835 902 895 117 729 261 817 280 761 160 427 194 402 673 545 664 417 559 962 528 404 375 723 457 476 925 36 524 52 493 856 306 506 670 58 118 971 526 600 796 3 740 709 162 382 619 585 874 128 589 45 724 284 865 208 511 378 474 592 571 928 38 41 701 632 617 611 931 753 179 805 259 299 201 876 22 25 916 71 451 196 426 822 429 373 767 12 488 804 294 683 733 773 541 344 163 395 627 452 293 151 324 122 232 736 455 869 929 772 919 995 407 844 357 880 924 157 295 102 461 993 510 954 542 29 979 648 978 393 698 561 515 287 289 843 246 168 361 277 857 934 101 431 498 747 483 829 365 490 418 826 625 491 975 912 262 292 838 938 731 914 326 391 231 927 973 398 646 714 833 355 112 94 576 422 779 680 560 986 340 697 471 998 966 530 139 715 206 952 685 807 579 241 192 371 781 769 712 61 603 477 360 575 959 711 130 119 359 203 539 272 66 692 286 189 626 205 369 684 387 778 216 790 298 933 164 126 992 63 234 283 522 456 165 239 609 719 848 330 489 233 106 580 629 818 983 577 136 832 69 364 180 568 124 334 675 529 100 534 765 538 1 381 981 235 918 255 43 837 775 751 28 478 358 76 154 686 177 243 899 347 888 389 257 317 55 72 703 146 574 595 957 447 305 14 631 423 787 552 204 720 599 251 872 424 296 174 282 144 328 200 459 254 479 788 127 141 939 910 923 97 721 678 172 636 881 527 752 604 806 195 383 104 630 34 963 550 997 442 414 331 988 512 638 487 249 608 123 546 815 408 303 891 26 996 750 668 661 760 116 377 921 343 507 253 624 333 710 158 669 784 897 437 854 137 107 903 516 655 59 169 236 39 95 237 482 16 771 652 776 42 445 613 766 4 325 463 967 40 868 598 896 79 643 674 582 961 744 345 229 10 853 109 618 801 828 985 676 5 182 566 362 492 688 605 432 302 908 645 265 825 549 346 816 949 416 901 352 700 850 370 31 481 224 520 587 191 926 555 812 982 363 647 81 419 349 748 583 532 113 390 969 883 743 89 248 930 460 565 860 199 380 722 356 291 108 410 904 944 351 889 148 47 644 268 794 809 226 823 82 138 607 830 264 300 786 677 514 405 513 83 551 893 332 789 759 911 469 556 213 699 892 504 523 188 591 149 533 946 984 774 945 518 819 665 33 855 225 48 316 354 341 403 271 915 706 800 989 531 572 388 458 321 590 708 93 485 808 942 842 230 279 210 521 890 920 958 120 446 65 472 991 622 811 793 32 252 428 634 730 517 275 694 0] {:changed? true}]
bench-insert=> (bench insert-vector [] 1000)
"Elapsed time: 129.433545 msecs"
[373 401 356 943 386 720 51 217 641 42 457 564 806 859 560 251 276 303 34 959 308 206 405 207 665 779 508 793 957 350 309 365 782 87 137 89 181 188 514 676 526 167 545 170 353 250 647 601 214 800 821 668 124 711 535 241 795 870 76 339 906 369 299 306 598 632 102 81 580 594 171 393 389 247 975 468 826 94 140 145 816 114 275 942 302 106 47 95 540 88 125 667 423 100 873 455 237 228 127 952 65 6 572 429 243 285 451 316 212 301 355 987 544 17 765 582 842 416 974 254 803 516 639 454 968 133 404 876 74 144 933 325 893 698 634 622 804 849 643 650 467 36 867 490 377 501 218 565 259 231 902 687 363 575 586 360 364 637 570 341 524 43 547 104 256 747 851 387 22 976 877 786 552 731 935 929 166 538 701 205 157 938 261 288 345 813 899 739 315 805 742 99 219 294 499 471 351 539 409 527 67 945 479 318 406 221 618 966 39 970 77 614 5 312 944 190 86 25 450 600 465 636 761 950 672 529 131 438 201 333 832 23 321 146 287 759 28 44 459 707 887 520 242 713 239 825 253 861 48 998 775 385 700 101 754 434 985 245 587 445 332 554 794 477 948 983 908 802 843 994 543 984 90 523 381 204 612 912 208 562 378 431 512 745 92 98 770 503 382 783 840 845 461 888 623 421 785 722 946 780 810 165 186 903 644 808 868 80 932 149 550 949 680 992 691 651 193 635 238 168 941 936 669 71 234 607 430 109 192 446 730 581 189 472 162 83 331 926 727 828 732 714 724 335 161 120 820 60 148 620 602 784 497 712 266 989 915 403 75 330 621 982 138 605 579 862 122 224 45 513 916 772 264 240 521 322 338 70 273 252 558 799 72 573 534 249 183 988 223 978 738 542 61 126 209 510 964 420 112 642 458 729 569 139 371 857 448 537 750 999 807 53 972 662 466 56 583 422 895 624 507 504 818 886 692 901 856 858 317 82 963 8 652 833 684 723 548 939 835 96 505 142 640 649 484 710 271 184 408 726 773 546 346 596 682 200 447 506 384 613 153 134 342 762 905 481 568 881 909 414 195 954 604 337 310 324 531 666 326 681 519 734 278 411 119 511 980 11 269 13 313 147 626 156 824 616 764 962 49 267 279 182 334 440 555 663 418 64 84 29 836 236 766 556 848 817 113 449 229 199 68 419 388 20 628 14 844 476 756 777 955 216 135 898 235 62 314 295 740 85 424 694 518 415 655 875 907 837 361 811 442 675 659 879 860 177 117 585 743 164 904 653 274 758 855 488 460 752 320 852 391 995 169 654 853 277 154 549 319 606 110 118 357 487 897 914 260 719 757 559 397 172 311 883 4 54 359 130 595 24 530 150 781 592 38 796 32 603 55 819 27 197 290 19 703 928 10 797 475 717 178 515 693 921 646 986 115 103 2 633 831 15 889 736 413 863 704 715 160 456 225 815 660 690 865 474 699 270 725 121 402 981 292 509
610 396 917 370 50 194 491 584 305 33 685 191 383 464 494 227 159 884 52 426 615 735 891 885 993 196 977 677 143 3 551 176 263 37 563 425 925 272 872 410 284 7
06 814 593 123 30 281 536 599 185 958 328 894 262 453 46 927 492 59 953 910 26 390 741 755 73 532 180 163 934 432 443 721 392 670 358 211 716 398 293 749 179 6
83 268 937 175 380 463 827 93 158 961 58 258 697 688 778 329 619 920 291 525 588 533 483 705 823 571 323 997 173 578 343 790 232 561 589 748 965 679 822 661 69
6 869 590 969 41 394 591 220 792 215 991 116 774 947 298 854 478 202 631 709 541 132 787 376 973 673 210 283 79 763 69 489 428 753 1 923 435 629 427 890 971 25
7 375 880 656 433 645 349 911 230 485 439 486 967 718 744 372 347 812 66 9 286 798 996 12 296 412 922 617 608 930 918 648 174 480 7 695 671 470 771 63 136 960
436 576 557 566 658 367 789 437 105 990 896 233 57 379 630 517 979 788 336 498 866 469 151 767 297 850 625 496 18 495 21 108 280 444 152 473 809 768 452 246 87
1 362 502 882 878 864 847 627 838 248 769 226 674 348 609 834 340 830 97 141 244 493 289 567 374 462 213 399 956 657 35 874 129 187 801 327 441 352 395 846 522
638 839 366 16 737 40 746 597 611 574 31 728 776 400 931 304 482 892 577 111 940 678 222 198 128 951 265 500 203 686 407 900 689 300 417 553 751 791 924 760 1
07 528 155 368 282 919 78 664 913 344 702 841 91 255 708 354 307 733 829 0]
bench-insert=>
bench-insert=> (bench insert-zipper (zip/vector-zip []) 200)
"Elapsed time: 17.650291 msecs"
[[69 166 146 84 59 77 130 52 175 4 125 126 179 172 188 181 193 76 74 34 64 177 66 30 173 184 121 51 60 178 11 156 134 194 17 102 62 185 5 43 71 83 87 138 196 167 38 169 187 137 106 115 1 162 101 180 79 131 109 105 42 136 65 95 75 57 55 108 8 160 191 45 157 133 114 53 155 153 103 54 111 41 171 176 2 40 15 118 31 96 28 145 22 189 37 48 151 143 129 78 128 14 82 63 140 26 81 89 91 86 161 10 124 92 117 127 58 186 190 32 88 12 33 144 132 36 163 198 119 16 158 85 195 116 98 90 148 23 47 3 123 170 113 174 80 46 183 72 122 9 7 147 56 100 24 73 25 150 142 152 99 120 21 67 97 139 68 149 110 159 197 165 192 94 164 61 93 20 6 141 135 44 13 199 29 50 112 35 182 107 27 168 19 49 104 39 18 154 70 0] {:changed? true}]
bench-insert=> (bench insert-vector [] 200)
"Elapsed time: 10.157477 msecs"
[90 154 123 110 174 83 3 63 104 94 60 50 105 191 19 40 86 84 46 57 162 28 176 146 65 153 199 67 30 10 61 102 8 196 20 38 138 21 165 155 23 168 136 43 99 96 116 18 69 39 68 109 58 173 198 139 26 62 14 52 29 106 134 97 1 98 135 131 147 78 42 113 9 144 151 111 16 148 17 150 36 72 184 169 142 130 167 107 170 117 152 95 76 179 89 49 81 112 54 15 163 73 75 25 37 100 194 32 85 120 13 180 166 181 114 115 119 143 164 183 137 161 74 182 108 93 64 55 185 190 7 48 31 145 175 195 33 12 88 92 118 188 22 158 87 187 45 129 2 186 197 71 177 122 56 140 156 66 172 34 59 159 160 24 189 157 41 133 178 47 44 82 126 171 77 124 35 4 91 51 193 132 53 149 5 79 192 128 11 70 6 125 101 141 103 80 121 27 127 0]
bench-insert=>
ClojureScript:bench-insert> (bench insert-zipper (zip/vector-zip []) 200)
"Elapsed time: 2488 msecs"
[[199 193 5 4 99 133 64 37 176 87 169 106 117 154 9 42 60 130 181 44 94 122 13 11 192 182 153 47 3 197 156 149 172 155 113 147 19 68 134 165 148 101 171 123 151 107 162 1 168 27 7 120 17 163 21 95 170 112 198 79 53 98 194 61 166 70 84 118 26 25 100 56 62 59 97 160 71 66 51 144 145 143 77 164 29 23 78 49 109 31 129 116 43 32 114 80 36 55 74 135 92 167 83 124 188 173 91 75 22 81 6 175 86 30 177 93 137 180 104 45 150 189 140 146 18 20 108 38 58 105 65 126 184 195 110 142 90 85 41 24 191 121 190 186 119 63 139 179 138 40 50 178 127 128 131 125 115 15 35 39 69 8 185 48 73 183 12 33 54 174 161 111 187 157 57 72 158 132 152 96 136 34 14 16 2 28 103 196 102 46 141 76 89 67 159 88 10 82 52 0] {:changed? true}]
ClojureScript:bench-insert> (bench insert-vector [] 200)
"Elapsed time: 1470 msecs"
[121 106 120 198 2 14 132 52 182 175 160 162 42 125 148 98 28 90 193 66 80 170 23 171 126 67 74 17 53 83 190 57 150 40 76 10 145 5 166 140 186 114 167 124 179 157 87 16 41 123 70 20 156 119 27 110 176 164 49 102 15 187 88 86 24 96 142 89 196 129 34 55 144 111 101 118 85 58 115 73 91 154 71 138 136 78 165 122 72 194 158 195 130 197 185 63 18 26 82 30 84 192 32 152 37 141 143 127 11 92 183 146 184 199 139 69 109 62 103 169 79 77 65 31 60 12 13 35 75 188 172 25 178 54 149 8 99 116 93 64 189 137 4 173 21 6 39 47 97 95 168 36 7 1 9 180 29 174 163 128 112 131 48 133 45 134 147 50 100 161 117 43 22 51 33 68 94 191 108 19 56 153 3 177 181 61 38 81 44 113 155 135 105 151 159 107 59 104 46 0]
ClojureScript:bench-insert>
(ns bench-insert
(:require [clojure.zip :as zip]))
(defn insert-zipper [n a z]
(if-let [l (zip/down z)]
(zip/up
(loop [n n l l]
(cond (zero? n) (zip/insert-left l a)
:else (if-let [r (zip/right l)]
(recur (dec n) r)
(zip/insert-right l a)))))
(zip/insert-child z a)))
(defn insert-vector [n a v]
(let [[x y] (split-at n v)]
(vec (concat x (list a) y))))
(defn bench [f z n]
(time
(reduce #(f (rand-int %2) %2 %1) z (range n))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment