Example #1
0
        public void LogFinishedSplit(string workerId, long totalSplits, long remainingSplits)
        {
            lock (LockLogFinished)
            {
                long      splitId   = remainingSplits;
                SplitInfo splitInfo = splitInfos[splitId];
                if (splitInfo.DidFinished())
                {
                    //Logger.LogInfo("[" + workerId + " SLOW FINISHED " + splitId + "]");
                    return;
                }

                splitInfos[splitId].EndedSplit();


                averageSplitTime = splitInfos[splitId].SplitTime() + 500;

                numSplits--;

                Logger.LogInfo("[" + workerId + " ENDED " + splitId + "] in " + splitInfos[splitId].SplitTime() + " ms. " + numSplits + " splits remaining");
            }
        }
Example #2
0
        public SplitInfo FindSlowSplit()
        {
            foreach (KeyValuePair <string, long> keyValue in workersSplits)
            {
                string    key       = keyValue.Key;
                SplitInfo splitInfo = splitInfos[keyValue.Value];


                if (averageSplitTime < long.MaxValue)
                {
                    long waitTime = splitInfo.splitId == 0 ? 3 * averageSplitTime : 2 * averageSplitTime;

                    if (!splitInfo.DidFinished() && splitInfo.SplitTime() > waitTime)
                    {
                        Logger.LogWarn("[SPLIT " + splitInfo.splitId + " SLOW] taking " + splitInfo.SplitTime() + " vs " + waitTime);

                        return(splitInfo);
                    }
                }
            }
            return(null);
        }