You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2877442 on 2016/02/23 by Graeme.Thornton@GThornton_DevCore
Allow 'dumpnonframe' stat command to also take an optional group name which will filter the output
Change 2879289 on 2016/02/24 by Graeme.Thornton@GThornton_DevCore
Removed "-" in switch string for load time tracker. Makes -NoLoadTrackClear cmd line param actually work
Change 2879323 on 2016/02/24 by Graeme.Thornton@GThornton_DevCore
PC builds now log engine initialization time with the load time tracker
Change 2879418 on 2016/02/24 by Graeme.Thornton@GThornton_DevCore
Optimization for FSignedArchiveReader
- Compute incoming data hash in parallel on another thread while we serialize and decrypt the signature on the chunk cache worker thread
Change 2879419 on 2016/02/24 by Graeme.Thornton@GThornton_DevCore
Extra stats for PakFile group
- Time reading from pak handles
- Number of open pak handles
Change 2881199 on 2016/02/25 by Graeme.Thornton@GThornton_DevCore
Use 32 bit CRCs to hash chunk contents rather than SHA1. Much faster to compute than SHA1, and the decrypting 4 bytes rather than 20 is also a lot faster
Change 2885687 on 2016/02/29 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1
Close disregard for GC pool when disabling it to leave it in a good state.
Change 2887358 on 2016/03/01 by Steve.Robb@Dev-Core
FlushCurrentThreadCache calls forwarded on from FMalloc wrappers.
Change 2887398 on 2016/03/01 by Steve.Robb@Dev-Core
Stats for MallocBinned2.
Change 2887682 on 2016/03/01 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1
Added code to catch game hangs. If game thread is stalled for more than 5 seconds we will catch that, report its callstack and crash.
Change 2889573 on 2016/03/02 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1
Renamed the new StackWalkAndDump to ThreadStackWalkAndDump to avoid name collisions and build errors.
Change 2889687 on 2016/03/02 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1
Send thread heartbeats during potentially slow tasks.
Change 2889963 on 2016/03/02 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1
Added the ability to query the name of a thread given its TLS id.
Change 2890439 on 2016/03/02 by Steve.Robb@Dev-Core
MallocBinned redirection header, to allow easy switching between MallocBinned and MallocBinned2.
Switch back to MallocBinned by default.
Change 2891799 on 2016/03/03 by Steve.Robb@Dev-Core
Shrunken GMallocBinned2MemSizeToIndex array.
Improvement of some shared templated alignment-related functions.
Change 2891812 on 2016/03/03 by Graeme.Thornton@GThornton_DevCore
Refactoring of pak signing to be more compatible with patching
- Store signatures in a block at the end of the pak file
- Optimize decryption of signatures by serializing them all when the pak is opened, and decrypting on the chunk cache worker thread between read requests.
Change 2891813 on 2016/03/03 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream2
Don't compile UnrealPak with ICU
Change 2892386 on 2016/03/03 by Steve.Robb@Dev-Core
GitHub #2070 - Fix incorrect FMallocDebug::Malloc alignment checking
Change 2894189 on 2016/03/04 by Steve.Robb@Dev-Core
Memswap fixes for sizes of 3, 5, 6 and 7, and early out on 0.
Change 2894427 on 2016/03/04 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1
Don't display message boxes in unattended mode when D3D device is removed.
Change 2896912 on 2016/03/07 by Graeme.Thornton@GThornton_DevCore
Disable reading of anything outside the pak file when in shipping builds
Change 2897053 on 2016/03/07 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1
A few improvements to thread heartbeat thread:
- Don't check for heartbeat in debug builds
- Don't spawn the thread heartbeat thread for programs
- Ignore stalls when exiting
Change 2898752 on 2016/03/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1
Fixing race conditions when using malloc verify
Change 2899075 on 2016/03/08 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1
UnrealPak will now accept hex values for p and q. Added the command line param to trust p and q.
Change 2899091 on 2016/03/08 by Steve.Robb@Dev-Core
Fix for TQueue::Peek const-correctness.
Change 2902775 on 2016/03/10 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1
Adding code to test signature keys.
Change 2905040 on 2016/03/11 by Robert.Manuszewski@Robert.Manuszewski_NCL_Stream1
TBigInt Multiply is now 30x faster
Change 2905218 on 2016/03/11 by Steve.Robb@Dev-Core
New FCString::Strspn and FCString::Strcspn functions.
[CL 2921423 by Robert Manuszewski in Main branch]
100 lines
2.5 KiB
C#
100 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Web.ModelBinding;
|
|
|
|
namespace Tools.CrashReporter.CrashReportCommon
|
|
{
|
|
/// <summary>
|
|
/// Thread-safe event counter for measuring approximate rate over a fixed period between now and a fixed time ago
|
|
/// </summary>
|
|
public class EventCounter
|
|
{
|
|
private class Bin
|
|
{
|
|
public int Count { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Create an event counter
|
|
/// </summary>
|
|
/// <param name="InAvePeriod">The period over which events are counter. The time we keep them and calculate the average rate.</param>
|
|
/// <param name="InResolution">The number of bins in which events are kept in the given period.</param>
|
|
public EventCounter(TimeSpan InAvePeriod, int InResolution)
|
|
{
|
|
Period = InAvePeriod;
|
|
Resolution = InResolution;
|
|
Bins = new Queue<Bin>(Resolution);
|
|
BinPeriod = TimeSpan.FromTicks(Period.Ticks/Resolution);
|
|
ActiveBin = new Bin();
|
|
Bins.Enqueue(ActiveBin);
|
|
Count = 0;
|
|
Timestamp = DateTime.UtcNow;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Adds events to the counter. Keeps track of internal bins and updates them keeping only those in our Period.
|
|
/// </summary>
|
|
/// <param name="InCount">The number of events to add</param>
|
|
public void AddEvent(int InCount = 1)
|
|
{
|
|
lock (ThisLock)
|
|
{
|
|
TotalCount += InCount;
|
|
DateTime EventTime = DateTime.UtcNow;
|
|
|
|
while (EventTime - Timestamp > BinPeriod)
|
|
{
|
|
ActiveBin = new Bin();
|
|
Bins.Enqueue(ActiveBin);
|
|
Timestamp += BinPeriod;
|
|
}
|
|
|
|
Count += InCount;
|
|
ActiveBin.Count += InCount;
|
|
|
|
while (Bins.Count > Resolution)
|
|
{
|
|
Count -= Bins.Dequeue().Count;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Count of all events since the counter was created.
|
|
/// </summary>
|
|
public int TotalEvents { get { return TotalCount; } }
|
|
|
|
/// <summary>
|
|
/// Count of all events currently in the time period we're interested in (Period) preceding now.
|
|
/// </summary>
|
|
public int EventsInPeriod { get { return Count; } }
|
|
|
|
/// <summary>
|
|
/// Current rate of events average over the period.
|
|
/// </summary>
|
|
public double EventsPerSecond
|
|
{
|
|
get
|
|
{
|
|
lock (ThisLock)
|
|
{
|
|
return Count/(BinPeriod.TotalSeconds*Bins.Count);
|
|
}
|
|
}
|
|
}
|
|
|
|
private DateTime Timestamp;
|
|
private readonly TimeSpan Period;
|
|
private readonly int Resolution;
|
|
private readonly TimeSpan BinPeriod;
|
|
private readonly Queue<Bin> Bins;
|
|
private Bin ActiveBin;
|
|
private int TotalCount;
|
|
private int Count;
|
|
private readonly Object ThisLock = new Object();
|
|
}
|
|
}
|