Hi, Derek Scherger wrote: > Even if size does have to traverse a list to count the elements one > would expect that traversing an *empty* list should be reasonably quick.
Yeah, but it the list is large, traversing is rather expensive, compared to aborting and returning false upon seeing the first element, as empty() can do. It's the difference between wanting to know the exact size or just being interested if there are some elements or not. > All the same, empty() does seem a bit easier on the eyes Yeah, I also like empty() better. > and if it wins on performance too then what the heck. For what it's worth, I suspected the slightly increased binary size and additional link time required for the nvm.cbr branch's binary and rerun the benchmark again just exactly the revision before: new: 805c482bc9bb80cd393be7d3ba01a65377d91d9c ref: 639a3179473e718e8b01b9c99232fa1f81ca7f61 This time I took special care to shut down other services on the machine so that the benchmark should really be the absolutely only load. With enough test runs I cannot really confirm the speed gain. See the three results below. I don't think it's really the nvm.cbr branch, as the executable didn't grow significantly. It would at least really surprise me. I rather think it's not such a good benchmark, because it varies quite a lot and it seems to measure a lot of disc i/o due to the drop_caches. I'm not sure we really want to exclude that from our benchmarks, because normally you run operations such as annotate with quite well populated caches. Anyway, sorry for the noise. I've just dropped the comment from NEWS. Regards Markus Wanner > annotate-a-ref.csv annotate-a-new.csv p > annotate-avg-resident-MiB 23.53 23.49 0.70 > annotate-avg-size-MiB 118.68 118.62 0.84 > annotate-max-resident-MiB 34.20 34.17 0.00 > annotate-max-size-MiB 130.86 130.86 nan > annotate-num-samples 1753.60 1757.40 0.87 > annotate-system-time 0.86 0.87 0.67 > annotate-user-time 3.49 3.50 0.62 > annotate-wall-time 9.18 9.11 0.27 > annotate-b-ref.csv annotate-b-new.csv p > annotate-avg-resident-MiB 11.89 11.68 0.44 > annotate-avg-size-MiB 103.59 103.74 0.75 > annotate-max-resident-MiB 18.63 18.61 0.00 > annotate-max-size-MiB 115.32 115.32 nan > annotate-num-samples 602.20 540.10 0.33 > annotate-system-time 0.18 0.18 0.70 > annotate-user-time 0.51 0.52 0.40 > annotate-wall-time 3.24 2.87 0.26 > annotate-c-ref.csv annotate-c-new.csv p > annotate-avg-resident-MiB 11.83 11.35 0.31 > annotate-avg-size-MiB 103.50 102.42 0.41 > annotate-max-resident-MiB 18.28 18.26 0.00 > annotate-max-size-MiB 114.93 114.93 nan > annotate-num-samples 590.60 676.10 0.26 > annotate-system-time 0.24 0.27 0.12 > annotate-user-time 0.75 0.75 0.77 > annotate-wall-time 3.19 3.66 0.21 > annotate-d-ref.csv annotate-d-new.csv p > annotate-avg-resident-MiB 27.30 26.69 0.18 > annotate-avg-size-MiB 123.26 122.28 0.18 > annotate-max-resident-MiB 36.11 36.08 0.00 > annotate-max-size-MiB 132.78 132.78 nan > annotate-num-samples 2699.90 2719.70 0.80 > annotate-system-time 1.07 1.04 0.32 > annotate-user-time 7.85 7.89 0.33 > annotate-wall-time 13.87 14.22 0.36 > > > > annotate-a-ref.csv annotate-a-new.csv p > annotate-avg-resident-MiB 23.42 23.43 0.99 > annotate-avg-size-MiB 118.53 118.56 0.93 > annotate-max-resident-MiB 34.19 34.17 0.00 > annotate-max-size-MiB 130.86 130.86 nan > annotate-num-samples 1708.50 1741.50 0.37 > annotate-system-time 0.88 0.85 0.23 > annotate-user-time 3.48 3.50 0.34 > annotate-wall-time 9.11 9.16 0.63 > annotate-b-ref.csv annotate-b-new.csv p > annotate-avg-resident-MiB 11.54 11.67 0.41 > annotate-avg-size-MiB 101.81 103.59 0.17 > annotate-max-resident-MiB 18.63 18.61 0.00 > annotate-max-size-MiB 115.32 115.32 nan > annotate-num-samples 570.40 566.40 0.83 > annotate-system-time 0.18 0.19 0.53 > annotate-user-time 0.52 0.51 0.48 > annotate-wall-time 3.04 3.02 0.77 > annotate-c-ref.csv annotate-c-new.csv p > annotate-avg-resident-MiB 12.03 12.20 0.21 > annotate-avg-size-MiB 104.18 105.06 0.37 > annotate-max-resident-MiB 18.28 18.26 0.00 > annotate-max-size-MiB 114.93 114.93 nan > annotate-num-samples 679.40 602.40 0.28 > annotate-system-time 0.22 0.26 0.01 > annotate-user-time 0.76 0.77 0.92 > annotate-wall-time 3.58 3.22 0.32 > annotate-d-ref.csv annotate-d-new.csv p > annotate-avg-resident-MiB 27.22 27.25 0.65 > annotate-avg-size-MiB 122.85 123.24 0.08 > annotate-max-resident-MiB 36.11 36.08 0.00 > annotate-max-size-MiB 132.78 132.78 nan > annotate-num-samples 2674.90 2695.60 0.63 > annotate-system-time 1.07 1.08 0.79 > annotate-user-time 7.83 7.85 0.55 > annotate-wall-time 13.86 13.88 0.86 > > > > > annotate-a-ref.csv annotate-a-new.csv p > annotate-avg-resident-MiB 23.45 22.90 0.31 > annotate-avg-size-MiB 118.90 117.10 0.31 > annotate-max-resident-MiB 34.19 34.17 0.00 > annotate-max-size-MiB 130.86 130.86 nan > annotate-num-samples 1781.10 1795.00 0.78 > annotate-system-time 0.86 0.88 0.50 > annotate-user-time 3.51 3.49 0.49 > annotate-wall-time 9.17 9.41 0.36 > annotate-b-ref.csv annotate-b-new.csv p > annotate-avg-resident-MiB 11.28 11.61 0.44 > annotate-avg-size-MiB 102.36 103.80 0.31 > annotate-max-resident-MiB 18.63 18.60 0.00 > annotate-max-size-MiB 115.32 115.32 nan > annotate-num-samples 588.60 552.80 0.62 > annotate-system-time 0.18 0.19 0.98 > annotate-user-time 0.51 0.51 0.88 > annotate-wall-time 3.17 2.97 0.58 > annotate-c-ref.csv annotate-c-new.csv p > annotate-avg-resident-MiB 11.74 11.68 0.71 > annotate-avg-size-MiB 103.83 103.33 0.53 > annotate-max-resident-MiB 18.28 18.26 0.00 > annotate-max-size-MiB 114.93 114.93 nan > annotate-num-samples 608.60 588.40 0.40 > annotate-system-time 0.28 0.25 0.04 > annotate-user-time 0.72 0.76 0.05 > annotate-wall-time 3.28 3.24 0.70 > annotate-d-ref.csv annotate-d-new.csv p > annotate-avg-resident-MiB 27.23 26.97 0.36 > annotate-avg-size-MiB 123.17 122.94 0.48 > annotate-max-resident-MiB 36.12 36.09 0.00 > annotate-max-size-MiB 132.78 132.78 nan > annotate-num-samples 2705.70 2786.20 0.53 > annotate-system-time 1.08 1.07 0.81 > annotate-user-time 7.82 7.88 0.22 > annotate-wall-time 13.98 14.52 0.36 _______________________________________________ Monotone-devel mailing list Monotone-devel@nongnu.org http://lists.nongnu.org/mailman/listinfo/monotone-devel