Registriert seit: 26. Mai 2004
3.159 Beiträge
|
Re: Berechnung von gleichzeitigen Zugriffen
1. Apr 2010, 13:12
Hier mal meine Idee als Algo, nur noch ein wenig optimiert:
Delphi-Quellcode:
type
TTimePeriod = record
StartTimestamp : TDateTime;
EndTimestamp : TDateTime;
end;
TTimePeriodArray = array of TTimePeriod;
function GetMaxTimeOverlaps( const ATimePeriods : TTimePeriodArray): Integer;
var
TimeArray : array [0..1439] of Integer;
tp : TTimePeriod;
i : Integer;
n : Integer;
IndexStart, IndexEnd : Integer;
Maximum, Value: Integer;
begin
// Verteilung der Zeiten auf das Array
Maximum := 1;
for i := 0 to Length(ATimePeriods) - 1 do
begin
tp := ATimePeriods[i];
IndexStart := HourOf( tp.StartTimestamp) * 60 + MinuteOf( tp.StartTimestamp);
IndexEnd := HourOf( tp.EndTimestamp) * 60 + MinuteOf( tp.EndTimestamp);
for n := IndexStart to IndexEnd do
begin
Value := TimeArray[n];
Inc(Value);
if (Value > Maximum) then
Maximum := Value;
TimeArray[n] := Value;
end;
end;
Result := Maximum - 1;
end;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
|