lsl-luau discrepancy with mono: register exhaustion with concatenation & possible performance issue of list string casting

Đang mở
#112 1 bình luận 0 reaction 1 người được giao Xem trên GitHub

@HaroldCindy đang làm issue này rồi.

Từ ngày 4/11/2026.

Đánh giá

Issue này chưa được đánh giá.

Mô tả

While trying to stress test / benchmark a comparison for (string) list and llDumpList2String, I came across a register exhaustion for a script in lsl-luau that works in mono.

I'm reporting both as one canny because I'm unsure if these are related.

A) First, for the benchmark:

In LSO:


=== list-to-string benchmark: 100 iterations x 300 items ===

(string)list       total = 1040.432007 ms   mean = 10.404320 ms

llDumpList2String  total = 1896.921143 ms   mean = 18.969212 ms

ratio (string/dump) = 0.548485x

=== DONE ===

In Mono:


=== list-to-string benchmark: 100 iterations x 300 items ===

(string)list       total = 226.023000 ms   mean = 2.260230 ms

llDumpList2String  total = 316.186000 ms   mean = 3.161860 ms

ratio (string/dump) = 0.714842x

=== DONE ===

In LSL-LUAU:


=== list-to-string benchmark: 100 iterations x 300 items ===

(string)list       total = 2287.902000 ms   mean = 22.879020 ms

llDumpList2String  total = 589.087000 ms   mean = 5.890871 ms

ratio (string/dump) = 3.883810x

=== DONE ===

===  list-to-string benchmark: 100 reps x 500 items ===

(string)list       total = 4536.675000 ms   mean = 45.366750 ms

llDumpList2String  total = 1022.474000 ms   mean = 10.224740 ms

ratio (string/dump) = 4.436957x

=== DONE ===

Something about how casting a list to a string is way worse in lsl-luau. My thought was that it's likely something that could be optimized if llDumpList2String is about 4x faster already.

B) Second, a test script of the discrepancy is the following


default

{

    state_entry()

    {

        integer i = 1;

        string s =

            (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i +

            (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i +

            (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i +

            (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i +

            (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i +

            (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i +

            (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i +

            (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i +

            (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i +

            (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i + (string)i ;

        llOwnerSay(s);

    }

}

It prints "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111" in mono, but in lsl-luau it fails to compile with "Out of registers when trying to allocate 1 registers: exceeded limit 255"

I doubt there are many real use cases where this would have an impact after switching off mono, but it is still a notable difference.

https://secondlife.canny.io/admin/feedback/slua-alpha/p/lsl-luau-discrepancy-with-mono-register-exhaustion-with-concatenation-possible-p

Ngôn ngữ chính
C++
Star
25
Fork
14
Merge trung bình
1 ngày 4 giờ
Pull request đã merge (30 ngày)
3

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của secondlife/slua

Tất cả issue của secondlife/slua

Issue tương tự

Thêm issue về C++

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.