Skip to content

Latest commit

 

History

History
47 lines (40 loc) · 1.32 KB

README.md

File metadata and controls

47 lines (40 loc) · 1.32 KB

Zero Allocation Strings

for(int i=0;i<1000;i++) 
{
  string newZeroGcString = NonAllocString.instance+"player HP:"+100;
}

by adding NonAllocString.instance prefix, string will be cached, so it will be allocated only 1 time

UPDATE! Did some optimization and now its even faster than https://github.com/Cysharp/ZString

    public void Update()
    {
        Utf16ValueStringBuilder st = ZString.CreateStringBuilder();
        using (bs.Profile("ZString"))
            for (int i = 0; i < 1000; i++)
            {
                    st.Append("foo");
                    st.AppendLine(i);
                    st.AppendLine(i);
                    var str = st.ToString();
                    st.Clear();
            }
        var sb = new StringBuilder();
        using (bs.Profile("StringBuilder"))
            for (int i = 0; i < 1000; i++)
            {
                sb.Append("foo");
                sb.Append(i);
                sb.Append(i);
                var str = sb.ToString();
                sb.Clear();
            }

        using (bs.Profile("NonAllocString"))
        for(int i=0;i<1000;i++) 
        {
            string newZeroGcString = NonAllocString.instance + "foo" +i + i;
        }

    }