51 if (!fZidir.exists()) { 52 fZidir.mkdirs(); 53 } 54 Matcher m = Pattern.compile("tzdata(?<ver>[0-9]{4}[A-z])") 55 .matcher(new String(Files.readAllBytes(Paths.get(tzdir, "VERSION")), "ascii")); 56 String ver = m.find() ? m.group("ver") : "NULL"; 57 58 ArrayList<String> alist = new ArrayList<>(); 59 alist.add("-V"); 60 alist.add(ver); 61 alist.add("-d"); 62 alist.add(zidir); 63 for (String f : tzfiles.split(" ")) { 64 alist.add(tzdir + File.separator + f); 65 } 66 for (String f : jdk_tzfiles.split(" ")) { 67 alist.add(jdk_tzdir + File.separator + f); 68 } 69 System.out.println("Compiling tz files!"); 70 Main.main(alist.toArray(new String[alist.size()])); 71 ////////////////////////////////// 72 73 System.out.println("testing!"); 74 ZoneInfoFile.ziDir = zidir; 75 long t0, t1; 76 77 t0 = System.nanoTime(); 78 ZoneInfoOld.getTimeZone("America/Los_Angeles"); 79 t1 = System.nanoTime(); 80 System.out.printf("OLD.getZoneInfoOld()[1]=%d%n", (t1 - t0) / 1000); 81 82 t0 = System.nanoTime(); 83 ZoneInfoOld.getTimeZone("America/New_York"); 84 t1 = System.nanoTime(); 85 System.out.printf("OLD.getZoneInfoOld()[2]=%d%n", (t1 - t0) / 1000); 86 87 t0 = System.nanoTime(); 88 ZoneInfoOld.getTimeZone("America/Denver"); 89 t1 = System.nanoTime(); 90 System.out.printf("OLD.getZoneInfoOld()[3]=%d%n", (t1 - t0) / 1000); 91 92 t0 = System.nanoTime(); 93 String[] zids_old = ZoneInfoOld.getAvailableIDs(); 94 t1 = System.nanoTime(); 95 System.out.printf("OLD.getAvailableIDs()=%d, total=%d%n", 96 (t1 - t0) / 1000, zids_old.length); 97 Arrays.sort(zids_old); 98 99 t0 = System.nanoTime(); 100 ZoneId.of("America/Los_Angeles").getRules(); 101 t1 = System.nanoTime(); 102 System.out.printf("NEW.getTimeZone()[1]=%d%n", (t1 - t0) / 1000); 103 104 t0 = System.nanoTime(); 105 TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles"); 106 t1 = System.nanoTime(); 107 System.out.printf("NEW.getTimeZone()[1]=%d%n", (t1 - t0) / 1000); 108 109 t0 = System.nanoTime(); 110 tz = TimeZone.getTimeZone("America/New_York"); 111 t1 = System.nanoTime(); 112 System.out.printf("NEW.getTimeZone()[2]=%d%n", (t1 - t0) / 1000); 113 114 t0 = System.nanoTime(); 115 tz = TimeZone.getTimeZone("America/Denver"); 116 t1 = System.nanoTime(); 117 System.out.printf("NEW.getTimeZone()[3]=%d%n", (t1 - t0) / 1000); 118 119 t0 = System.nanoTime(); 120 String[] zids_new = TimeZone.getAvailableIDs(); 121 t1 = System.nanoTime(); 122 System.out.printf("NEW.getAvailableIDs()=%d, total=%d%n", 123 (t1 - t0) / 1000, zids_new.length); 124 Arrays.sort(zids_new); 125 126 t0 = System.currentTimeMillis(); 127 for (String zid : zids_new) { 128 TimeZone.getTimeZone(zid); 129 } 130 t1 = System.currentTimeMillis(); 131 System.out.printf("NEW.TotalTZ()=%d (ms)%n", t1 - t0); 132 133 t0 = System.currentTimeMillis(); 134 for (String zid : zids_old) { 135 ZoneInfoOld.getTimeZone(zid); 136 } 137 t1 = System.currentTimeMillis(); 138 System.out.printf("OLD.TotalTZ()=%d (ms)%n", t1 - t0); 139 140 if (!Arrays.equals(zids_old, zids_new)) { 141 throw new RuntimeException(" FAILED: availableIds don't match"); 142 } 143 for (String zid : zids_new) { 144 ZoneInfoOld zi = toZoneInfoOld(TimeZone.getTimeZone(zid)); 145 ZoneInfoOld ziOLD = (ZoneInfoOld)ZoneInfoOld.getTimeZone(zid); 146 if (! zi.equalsTo(ziOLD)) { 147 System.out.println(zi.diffsTo(ziOLD)); 148 throw new RuntimeException(" FAILED: " + zid); 149 } 150 } 151 delete(fZidir); 152 153 // test tzdb version 154 if (!ver.equals(sun.util.calendar.ZoneInfoFile.getVersion())) { 155 System.out.printf(" FAILED: ver=%s, expected=%s%n", 156 sun.util.calendar.ZoneInfoFile.getVersion(), ver); 157 throw new RuntimeException("Version test failed"); 158 } 159 160 // test getAvailableIDs(raw); 161 zids_new = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000); 162 //Arrays.sort(zids_new); | 51 if (!fZidir.exists()) { 52 fZidir.mkdirs(); 53 } 54 Matcher m = Pattern.compile("tzdata(?<ver>[0-9]{4}[A-z])") 55 .matcher(new String(Files.readAllBytes(Paths.get(tzdir, "VERSION")), "ascii")); 56 String ver = m.find() ? m.group("ver") : "NULL"; 57 58 ArrayList<String> alist = new ArrayList<>(); 59 alist.add("-V"); 60 alist.add(ver); 61 alist.add("-d"); 62 alist.add(zidir); 63 for (String f : tzfiles.split(" ")) { 64 alist.add(tzdir + File.separator + f); 65 } 66 for (String f : jdk_tzfiles.split(" ")) { 67 alist.add(jdk_tzdir + File.separator + f); 68 } 69 System.out.println("Compiling tz files!"); 70 Main.main(alist.toArray(new String[alist.size()])); 71 72 ////////////////////////////////// 73 System.out.println("testing!"); 74 ZoneInfoFile.ziDir = zidir; 75 long t0, t1; 76 77 t0 = System.nanoTime(); 78 ZoneInfoOld.getTimeZone("America/Los_Angeles"); 79 t1 = System.nanoTime(); 80 System.out.printf("OLD.getZoneInfoOld()[1]=%d%n", (t1 - t0) / 1000); 81 82 t0 = System.nanoTime(); 83 ZoneInfoOld.getTimeZone("America/New_York"); 84 t1 = System.nanoTime(); 85 System.out.printf("OLD.getZoneInfoOld()[2]=%d%n", (t1 - t0) / 1000); 86 87 t0 = System.nanoTime(); 88 ZoneInfoOld.getTimeZone("America/Denver"); 89 t1 = System.nanoTime(); 90 System.out.printf("OLD.getZoneInfoOld()[3]=%d%n", (t1 - t0) / 1000); 91 92 t0 = System.nanoTime(); 93 String[] zids_old = ZoneInfoOld.getAvailableIDs(); 94 t1 = System.nanoTime(); 95 System.out.printf("OLD.getAvailableIDs()=%d, total=%d%n", 96 (t1 - t0) / 1000, zids_old.length); 97 Arrays.sort(zids_old); 98 99 t0 = System.nanoTime(); 100 String[] alias_old = ZoneInfoOld.getAliasTable() 101 .keySet().toArray(new String[0]); 102 t1 = System.nanoTime(); 103 System.out.printf("OLD.getAliasTable()=%d, total=%d%n", 104 (t1 - t0) / 1000, alias_old.length); 105 Arrays.sort(alias_old); 106 107 t0 = System.currentTimeMillis(); 108 for (String zid : zids_old) { 109 ZoneInfoOld.getTimeZone(zid); 110 } 111 t1 = System.currentTimeMillis(); 112 System.out.printf("OLD.TotalTZ()=%d (ms)%n", t1 - t0); 113 114 /* 115 t0 = System.nanoTime(); 116 ZoneId.of("America/Los_Angeles").getRules(); 117 t1 = System.nanoTime(); 118 System.out.printf("NEW.ZoneId.of()[1]=%d%n", (t1 - t0) / 1000); 119 */ 120 t0 = System.nanoTime(); 121 TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles"); 122 t1 = System.nanoTime(); 123 System.out.printf("NEW.getTimeZone()[1]=%d%n", (t1 - t0) / 1000); 124 125 t0 = System.nanoTime(); 126 tz = TimeZone.getTimeZone("America/New_York"); 127 t1 = System.nanoTime(); 128 System.out.printf("NEW.getTimeZone()[2]=%d%n", (t1 - t0) / 1000); 129 130 t0 = System.nanoTime(); 131 tz = TimeZone.getTimeZone("America/Denver"); 132 t1 = System.nanoTime(); 133 System.out.printf("NEW.getTimeZone()[3]=%d%n", (t1 - t0) / 1000); 134 135 t0 = System.nanoTime(); 136 String[] zids_new = TimeZone.getAvailableIDs(); 137 t1 = System.nanoTime(); 138 System.out.printf("NEW.getAvailableIDs()=%d, total=%d%n", 139 (t1 - t0) / 1000, zids_new.length); 140 Arrays.sort(zids_new); 141 142 t0 = System.nanoTime(); 143 String[] alias_new = sun.util.calendar.ZoneInfo.getAliasTable() 144 .keySet().toArray(new String[0]); 145 t1 = System.nanoTime(); 146 System.out.printf("NEW.getAliasTable()=%d, total=%d%n", 147 (t1 - t0) / 1000, alias_new.length); 148 Arrays.sort(alias_new); 149 150 t0 = System.currentTimeMillis(); 151 for (String zid : zids_new) { 152 TimeZone.getTimeZone(zid); 153 } 154 t1 = System.currentTimeMillis(); 155 System.out.printf("NEW.TotalTZ()=%d (ms)%n", t1 - t0); 156 157 if (!Arrays.equals(zids_old, zids_new)) { 158 throw new RuntimeException(" FAILED: availableIds don't match"); 159 } 160 161 if (!Arrays.equals(alias_old, alias_new)) { 162 throw new RuntimeException(" FAILED: aliases don't match"); 163 } 164 165 for (String zid : zids_new) { 166 ZoneInfoOld zi = toZoneInfoOld(TimeZone.getTimeZone(zid)); 167 ZoneInfoOld ziOLD = (ZoneInfoOld)ZoneInfoOld.getTimeZone(zid); 168 if (! zi.equalsTo(ziOLD)) { 169 System.out.println(zi.diffsTo(ziOLD)); 170 throw new RuntimeException(" FAILED: " + zid); 171 } 172 } 173 delete(fZidir); 174 175 // test tzdb version 176 if (!ver.equals(sun.util.calendar.ZoneInfoFile.getVersion())) { 177 System.out.printf(" FAILED: ver=%s, expected=%s%n", 178 sun.util.calendar.ZoneInfoFile.getVersion(), ver); 179 throw new RuntimeException("Version test failed"); 180 } 181 182 // test getAvailableIDs(raw); 183 zids_new = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000); 184 //Arrays.sort(zids_new); |