【Unity开发】几种空值判断的性能测试)
项目优化过程中,一个非常细节的优化,就是在项目数据处理过程中,会用大量的null和“”空值的判断,参考了一些网友说的性能差别很大,是不是真的需要优化的问题,做了本文的测试。
完整测试代码
using System;
using UnityEngine;
public class TestNull : MonoBehaviour
{
void Start()
{
// 初始化测试数据
int total = 1000000;
long st, se;
string mode = "abc";
int a=0, b=0, c=0;
// 测试关系运算性能
st = DateTime.UtcNow.Ticks;
for (int i = 0; i < total; i++)
{
if(mode != null && mode !="")
{
a = i;
}else{
a = i;
}
}
se = DateTime.UtcNow.Ticks;
float s1 = se - st;
Debug.LogWarning(s1/10000 + "ms [!=null && !=\"\"]");
// 测试条件运算性能
st = DateTime.UtcNow.Ticks;
for (int i = 0; i < total; i++)
{
if(mode is not null && mode !="")
{
b = i;
}else{
b = i;
}
}
se = DateTime.UtcNow.Ticks;
float s2 = se - st;
Debug.LogWarning(s2/10000 + "ms [is not null && != \"\"]");
// 测试函数运算性能
st = DateTime.UtcNow.Ticks;
for (int i = 0; i < total; i++)
{
if(!string.IsNullOrEmpty(mode))
{
c = i;
}else{
c = i;
}
}
se = DateTime.UtcNow.Ticks;
float s3 = se - st;
Debug.LogWarning(s3/10000 + "ms [IsNullOrEmpty]");
}
测试结果
性能一目了然,对于百万级性能测试来说,实际的开发中是否有实际应用价值,大家自已按需考虑。