Advertisement
Guest User

Untitled

a guest
Oct 21st, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.14 KB | None | 0 0
  1. /*
  2.  * Copyright (c) 2014, Oracle America, Inc.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions are met:
  7.  *
  8.  *  * Redistributions of source code must retain the above copyright notice,
  9.  *    this list of conditions and the following disclaimer.
  10.  *
  11.  *  * Redistributions in binary form must reproduce the above copyright
  12.  *    notice, this list of conditions and the following disclaimer in the
  13.  *    documentation and/or other materials provided with the distribution.
  14.  *
  15.  *  * Neither the name of Oracle nor the names of its contributors may be used
  16.  *    to endorse or promote products derived from this software without
  17.  *    specific prior written permission.
  18.  *
  19.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  20.  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  21.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  22.  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
  23.  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  24.  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  25.  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  26.  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  27.  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  28.  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  29.  * THE POSSIBILITY OF SUCH DAMAGE.
  30.  */
  31.  
  32. package org.agoncal.sample.jmh;
  33.  
  34. import org.agoncal.sample.jmh.model.ServiceCategory;
  35. import org.agoncal.sample.jmh.model.ServiceType;
  36. import org.openjdk.jmh.annotations.*;
  37.  
  38. import java.util.HashSet;
  39. import java.util.Set;
  40. import java.util.stream.Collectors;
  41.  
  42. @Fork(value = 2)
  43. public class MyBenchmark {
  44.  
  45.     @State(Scope.Benchmark)
  46.     public static class BenchState {
  47.         Set<ServiceCategory> serviceCategories;
  48.         Set<ServiceType> serviceTypes;
  49.         ServiceType serviceType;
  50.  
  51.         @Setup
  52.         public void setup(){
  53.             serviceCategories = new HashSet<>();
  54.             for (int i = 0; i < 100; i++) {
  55.                 serviceTypes = new HashSet<>();
  56.                 for (int j = 0; j < 100; j++) {
  57.                     ServiceType serviceTypeToAdd = new ServiceType(Integer.toString(j));
  58.                     serviceTypes.add(serviceTypeToAdd);
  59.  
  60.                     if (i == 50 && j == 50) {
  61.                         serviceType = serviceTypeToAdd;
  62.                     }
  63.                 }
  64.                 serviceCategories.add(new ServiceCategory(serviceTypes));
  65.             }
  66.         }
  67.        
  68.         @TearDown
  69.         public void tearDown(){
  70.             serviceCategories = null;
  71.             serviceTypes = null;
  72.             serviceType = null;
  73.         }
  74.     }
  75.    
  76.    
  77.    
  78.     @Benchmark
  79.     public void testAnyMetch(BenchState benchState) {
  80.         benchState.serviceCategories.stream()
  81.                 .anyMatch(serviceCategory -> serviceCategory.getServiceTypes().contains(benchState.serviceType));
  82.     }
  83.  
  84.     @Benchmark
  85.     public void testFlatMap(BenchState benchState) {
  86.         benchState.serviceCategories.stream()
  87.                 .flatMap(serviceCategory -> serviceCategory.getServiceTypes().stream()).collect(Collectors.toSet()).contains(benchState.serviceType);
  88.     }
  89.  
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement