207 lines
5.9 KiB
Lua
207 lines
5.9 KiB
Lua
|
|
require "UnLua"
|
||
|
|
|
||
|
|
local UnLuaPerformanceTestProxy = Class()
|
||
|
|
|
||
|
|
function UnLuaPerformanceTestProxy:ReceiveBeginPlay()
|
||
|
|
local N = 1000000
|
||
|
|
local Multiplier = 1000000000.0 / N
|
||
|
|
local RawObject = self.Object
|
||
|
|
|
||
|
|
-- warm up
|
||
|
|
for i=1, N do
|
||
|
|
self:NOP()
|
||
|
|
end
|
||
|
|
|
||
|
|
local StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
local MeshID = RawObject.MeshID
|
||
|
|
end
|
||
|
|
local EndTime = Seconds()
|
||
|
|
local Message = "read int32 ; " .. tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
RawObject.MeshID = i
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "write int32 ; " .. tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
local MeshName = RawObject.MeshName
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "read FString ; " .. tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
RawObject.MeshName = "9527"
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "write FString ; " .. tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
local COM = RawObject.COM
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "read FVector ; " .. tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
local COM = UE4.FVector(1.0, 1.0, 1.0)
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
RawObject.COM = COM
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "write FVector ; " .. tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
local Positions = RawObject.Positions
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "read TArray<FVector> ; " .. tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
local PredictedPositions = UE4.TArray(UE4.FVector)
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
RawObject.PredictedPositions = PredictedPositions
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "write TArray<FVector> ; " .. tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
self:NOP()
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "void NOP() ; " .. tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
self:Simulate(0.0167)
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "void Simulate(float) ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
local MeshID = self:GetMeshID()
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "int32 GetMeshID() const ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
local MeshName = self:GetMeshName()
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "const FString& GetMeshName() const ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
self:GetCOM(COM)
|
||
|
|
--local COMCopy = self:GetCOM(COM)
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "const FVector& GetCOM() const ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
local NewMeshID = self:UpdateMeshID(1024)
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "int32 UpdateMeshID(int32) ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
local NewMeshName = self:UpdateMeshName("1024")
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "FString UpdateMeshName(const FString&) ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
local Origin = UE4.FVector(1.0, 1.0, 1.0)
|
||
|
|
local Direction = UE4.FVector(1.0, 0.0, 0.0)
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
local bHit = self:Raycast(Origin, Direction)
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "bool Raycast(const FVector&, const FVector&) const ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
local Indices = UE4.TArray(0)
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
self:GetIndices(Indices)
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "void GetIndices(TArray<int32>&) const ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
for i=1, 1024 do
|
||
|
|
Indices:Add(i)
|
||
|
|
end
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
self:GetIndices(Indices)
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "void GetIndices(TArray<int32>&) const with 1024 items ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
self:UpdateIndices(Indices)
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "void UpdateIndices(const TArray<int32>&) ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
local Positions = UE4.TArray(UE4.FVector)
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
self:GetPositions(Positions)
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "void GetPositions(TArray<FVector>&) const ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
for i=1, 1024 do
|
||
|
|
Positions:Add(UE4.FVector(i, i, i))
|
||
|
|
end
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
self:GetPositions(Positions)
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "void GetPositions(TArray<FVector>&) const with 1024 items ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
self:UpdatePositions(Positions)
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "void UpdatePositions(const TArray<FVector>&) ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
self:GetPredictedPositions(PredictedPositions)
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "const TArray<FVector>& GetPredictedPositions() const ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
local ID, Name, bResult = self:GetMeshInfo(0, "", COM, Indices, Positions, PredictedPositions)
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "bool GetMeshInfo(int32&, FString&, FVector&, TArray<int32>&, TArray<FVector>&, TArray<FVector>&) const ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
StartTime = Seconds()
|
||
|
|
for i=1, N do
|
||
|
|
local HitResult = UE4.FHitResult()
|
||
|
|
end
|
||
|
|
EndTime = Seconds()
|
||
|
|
Message = Message .. "\n" .. "FHitResult() ; "..tostring((EndTime - StartTime) * Multiplier)
|
||
|
|
|
||
|
|
LogPerformanceData(Message)
|
||
|
|
end
|
||
|
|
|
||
|
|
return UnLuaPerformanceTestProxy
|