guava计算md5、sha1和murmurhash

下面是我用来计算MD5和sha1的一段使用guava的代码。

    public static void test002() throws Exception {
        String msg = StringUtils.repeat('-', 200);
        int testCount = 100000;
        long sha1Time = 0L;
        long md5Time = 0L;
        long murmur3Time = 0L;
        double sha1Average = 0D;
        double md5Average = 0D;
        double murmur3Average = 0D;

        long one = System.currentTimeMillis();
        HashFunction sha1 = Hashing.sha1();
        for (int i = 0; i < testCount; i++) {
            Stopwatch w = Stopwatch.createStarted();
            HashCode hashCode = sha1.hashString(msg + i, Charsets.UTF_8);
            String str = hashCode.toString();
            System.out.println(String.format("sh1's hashCode:%s,length:%s,it consumes:%s", str, str.length(),
                    w));
        }
        long two = System.currentTimeMillis();
        sha1Time = two - one;
        HashFunction md5 = Hashing.md5();
        for (int i = 0; i < testCount; i++) {
            Stopwatch w = Stopwatch.createStarted();
            HashCode md5HashCode = md5.hashString(msg + i, Charsets.UTF_8);
            String md5HashCodeStr = md5HashCode.toString();
            System.out.println(String.format("md5's hashCode:%s,length:%s,it consumes:%s", md5HashCodeStr,
                    md5HashCodeStr.length(), w));
        }
        long three = System.currentTimeMillis();
        md5Time = three - two;

        HashFunction murmur3 = Hashing.murmur3_32();
        Set<String> set = Sets.newHashSet();
        for (int i = 0; i < testCount; i++) {
            Stopwatch w = Stopwatch.createStarted();
            HashCode murmur3HashCode = murmur3.hashString(msg + i, Charsets.UTF_8);
            String murmur3HashCodeStr = murmur3HashCode.toString();
            System.out.println(String.format("murmur3's hashCode:%s,length:%s,it consumes:%s",
                    murmur3HashCodeStr, murmur3HashCodeStr.length(), w));
            set.add(murmur3HashCodeStr);
        }
        long four = System.currentTimeMillis();
        murmur3Time = four - three;

        sha1Average = sha1Time / testCount;
        md5Average = md5Time / testCount;
        murmur3Average = murmur3Time / testCount;

        System.out.println("set size : " + set.size());
        System.out
                .println(String
                        .format("sha1 sum time:%s seconds,average time:%s ms\nmd5 sum time:%s seconds,average time:%s ms\nmurmur3 sum time:%s seconds,average time:%s ms",
                                changeToSecond(sha1Time), sha1Average, changeToSecond(md5Time), md5Average,
                                changeToSecond(murmur3Time), murmur3Average));

    }

猜你喜欢

转载自kanpiaoxue.iteye.com/blog/2372640