Unreal脚本性能对比

常见虚幻脚本简单测试

case 1: UnLua DevelopmentEditor

code:

local MathLibrary = UE.UKismetMathLibrary
local BeginT = MathLibrary.Now()
local TestVec
for i = 1, 1024 * 1024 do
	TestVec = UE.TArray(UE.FVector)
	TestVec:Add(UE.FVector(0, 0, 0))
	TestVec:Add(UE.FVector(0, 0, 1))
	TestVec:Add(UE.FVector(0, 1, 0))
	TestVec:Add(UE.FVector(1, 0, 0))
	TestVec:Add(UE.FVector(1, 1, 0))
	TestVec:Add(UE.FVector(1, 0, 1))
	TestVec:Add(UE.FVector(0, 1, 1))
	TestVec:Add(UE.FVector(1, 1, 1))
	MathLibrary.PointsAreCoplanar(TestVec, 0.1)
end

local EndT = MathLibrary.Now();
local DeltaT = MathLibrary.Subtract_DateTimeDateTime(EndT, BeginT);
local Day, Hour, Min, Second, MS = MathLibrary.BreakTimespan(DeltaT);
local Msg = string.format("%d, %d", Second, MS);
print("Call ToUnixTimestamp Cost: " .. Msg);

result:

LogUnLua: Call Script Cost: 6.531s
LogUnLua: Call Script Cost: 6.649s
LogUnLua: Call Script Cost: 6.757s
LogUnLua: Call Script Cost: 6.612s
LogUnLua: Call Script Cost: 6.682s
LogUnLua: Call Script Cost: 6.758s

case 2: puerts(v8) DevelopmentEditor

code:

let MathLibrary = UE.KismetMathLibrary;
let FVector = UE.Vector;
let BeginT = MathLibrary.Now();
for (let i = 0; i < 1024 * 1024; ++i) {
    let TestVec = UE.NewArray(UE.Vector);
    TestVec.Add(new FVector(0, 0, 0));
    TestVec.Add(new FVector(0, 0, 1));
    TestVec.Add(new FVector(0, 1, 0));
    TestVec.Add(new FVector(0, 1, 1));
    TestVec.Add(new FVector(1, 0, 0));
    TestVec.Add(new FVector(1, 0, 1));
    TestVec.Add(new FVector(1, 1, 0));
    TestVec.Add(new FVector(1, 1, 1));
    MathLibrary.PointsAreCoplanar(TestVec, 0.1);
}
let EndT = MathLibrary.Now();
let DeltaT = MathLibrary.Subtract_DateTimeDateTime(EndT, BeginT);
let DeltaT2 = MathLibrary.GetTotalSeconds(DeltaT)
console.log("Call Script Cost: " + DeltaT2 + 's');

result:

Puerts: (0x0000021E7FD08450) Call Script Cost: 7.524s
Puerts: (0x0000021E7E0F2DB0) Call Script Cost: 7.672s
Puerts: (0x0000021E7F618090) Call Script Cost: 7.593s
Puerts: (0x0000021E86406AF0) Call Script Cost: 7.587s
Puerts: (0x0000021EB7F38D70) Call Script Cost: 7.523s
Puerts: (0x0000021EAF22BAF0) Call Script Cost: 7.568s

case 3: UnrealSharp DevelopmentEditor

code:

{
    FDateTime BeginT = MathLibrary.Now();

    for (int i = 0; i < 1024 * 1024; ++i)
    {
        List<FVector> TestVec = new List<FVector>();
        TestVec.Add(new FVector(0, 0, 0));
        TestVec.Add(new FVector(0, 0, 1));
        TestVec.Add(new FVector(0, 1, 0));
        TestVec.Add(new FVector(0, 1, 1));
        TestVec.Add(new FVector(1, 0, 0));
        TestVec.Add(new FVector(1, 0, 1));
        TestVec.Add(new FVector(1, 1, 0));
        TestVec.Add(new FVector(1, 1, 1));
        MathLibrary.PointsAreCoplanar(TestVec, 0.01f);
    }

    FDateTime EndT = MathLibrary.Now();
    FTimespan DeltaT = MathLibrary.Subtract_DateTimeDateTime(EndT, BeginT);
    double DeltaT2 = MathLibrary.GetTotalSeconds(DeltaT);
    SystemLibrary.PrintString("Call Script Cost: " + DeltaT2.ToString() + "s");
}

result:

LogBlueprintUserMessages: [UI_Layer_Game_C_0] Call Script Cost: 0.398s
LogBlueprintUserMessages: [UI_Layer_Game_C_0] Call Script Cost: 0.356s
LogBlueprintUserMessages: [UI_Layer_Game_C_0] Call Script Cost: 0.340s
LogBlueprintUserMessages: [UI_Layer_Game_C_0] Call Script Cost: 0.350s
LogBlueprintUserMessages: [UI_Layer_Game_C_0] Call Script Cost: 0.354s
LogBlueprintUserMessages: [UI_Layer_Game_C_0] Call Script Cost: 0.345s
posted @ 2025-06-27 20:36  夏至日道在于内衡  阅读(25)  评论(0)    收藏  举报