[ https://issues.apache.org/jira/browse/LANG-1355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16198748#comment-16198748 ]
ASF GitHub Bot commented on LANG-1355: -------------------------------------- Github user chonton commented on a diff in the pull request: https://github.com/apache/commons-lang/pull/296#discussion_r143748823 --- Diff: src/main/java/org/apache/commons/lang3/time/FastTimeZone.java --- @@ -0,0 +1,90 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.commons.lang3.time; + +import java.util.TimeZone; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Faster methods to produce custom time zones. + * + * @since 3.7 + */ +public class FastTimeZone { --- End diff -- done > TimeZone.getTimeZone() in FastDateParser causes resource contention > ------------------------------------------------------------------- > > Key: LANG-1355 > URL: https://issues.apache.org/jira/browse/LANG-1355 > Project: Commons Lang > Issue Type: Bug > Components: lang.time.* > Affects Versions: 3.6 > Environment: Windows > Reporter: Keith Boone > Assignee: Charles Honton > Original Estimate: 48h > Remaining Estimate: 48h > > Under heavy load we are seeing contention in FastDateParser.parse() on calls > to TimeZone.getTimeZone(). TimeZone.getTimeZone() is a synchronized static > in the Oracle JVM. > Our proposed solution is to add a class TimeZoneCache containing a single > method getTimeZone() which gets the requested time zone from a ConcurrentMap, > and if not present, looks it up via TimeZone.getTimeZone() and caches it > before returning it. > Then replace calls to TimeZone.getTimeZone() in FastDateParser ( and > whereever else) to calls to TimeZoneCache.getTimeZone(). > The reason to add a separate class is because it can also be used by other > applications which heavily parse or format or do other things where TimeZone > is repeatedly needed. > Under extreme load we have seen an 50:1 improvement in calls to > FastDateParser.parse(). This saves about a ms/call in our test environment, > and reduces contention. -- This message was sent by Atlassian JIRA (v6.4.14#64029)