Flash được biết là hành xử theo những cách rất khó đoán khi nói đến thao tác dữ liệu. Tôi tò mò rằng nếu có bất kỳ lợi ích hiệu suất/bộ nhớ để sử dụng số thay vì ints sang một bên từ các giá trị cần độ chính xác. Tôi đã nghe nói rằng một số thao tác cơ bản trong Flash có thể chuyển đổi nhiều lần giữa hai loại để giải quyết biểu thức. Tôi cũng đã nghe nói rằng thời gian chạy Flash, dưới mui xe, thực sự bản đồ ints để không chính xác Số/Floats trong thời gian chạy. Có bất kỳ điều này đúng không?Ints có luôn nhanh hơn Số/Nổi trong AS3 không?
Trả lời
Thời gian chạy Flash thực sự là một nơi tối.
- Như bạn đã đề cập AVM2 does convert big ints into Number.
- Số nguyên là số thực int.
- And there's more stuff about ints.
- Các gợi ý được sử dụng chậm trong vòng lặp BUT NOW THEY ARE NOT (kết quả trong bài viết dường như là sự kết hợp giữa tạo mã byte lạ và tối ưu hóa JIT).
- Số mất nhiều không gian hơn trong bộ nhớ nhưng đây là
nothing
so với ngay cả một tệp JPEG duy nhất. - Về mặt logic, cảm thấy tốt hơn khi sử dụng
uints
trong các vòng lặp. - Số là dấu phẩy động, bạn phải cẩn thận so sánh chúng.
Jackson Dunstan thực hiện kiểm tra khá tốt về hiệu suất cấu trúc ngôn ngữ AS3 khác nhau. Tất nhiên nó luôn luôn tốt để kiểm tra kết quả cho mình. Từ loạt bài về hiệu suất 10.2 bạn có thể thấy rằng với mọi phiên bản Flash Player mới, chúng tối ưu hóa thứ gì đó nhưng những thứ khác có thể chậm hơn: 123.
P.S. Câu trả lời này có thể già đi rất sớm và cũng có thể được trích dẫn trong một vài năm sau đó tất nhiên sẽ sai.
Bạn không nhận được bất kỳ lợi ích nào về hiệu suất thực tế thực sự với số int. Vì vậy, nếu bạn không sử dụng một biến cho các công cụ như chỉ số vòng lặp hoặc những thứ yêu cầu gia số chính xác, Số là tốt. Trong thực tế, một số có thể là NaN nếu bạn nhận được một kết quả không hợp lệ, đó là một lợi ích tốt đẹp.
- 1. Trong SQL, UPDATE có luôn nhanh hơn DELETE + INSERT không?
- 2. Ints luôn được khởi tạo là 0?
- 3. O (log n) luôn luôn nhanh hơn O (n)
- 4. Việc sử dụng chuỗi như là chìa khóa trong dict có luôn nhanh hơn không?
- 5. Python có nhanh hơn và nhẹ hơn C++ không?
- 6. nhanh hoặc không đồng bộ JPEG AS3 mã hóa
- 7. Có phải `mở rộng` nhanh hơn` + = `không?
- 8. Mã C có chạy nhanh hơn không?
- 9. Fastcall có thực sự nhanh hơn không?
- 10. C# có nhanh hơn VB.NET không?
- 11. MongoDB không nhanh hơn MySQL?
- 12. StretchDIBits có vẻ chậm, API có nhanh hơn không?
- 13. Nhanh chóng truyền trong C# bằng cách sử dụng BitConverter, nó có thể nhanh hơn không?
- 14. Mã nhanh hơn trong R
- 15. Trong ruby, file.readlines.each không nhanh hơn file.open.each_line, tại sao?
- 16. Nhân nhanh hơn trong ruby?
- 17. Quercus (Java) có nhanh hơn bản PHP không?
- 18. _ftol2_sse, có các tùy chọn nhanh hơn không?
- 19. Có độ nén mất nhanh hơn JPEG không?
- 20. Giao thức uwsgi có nhanh hơn giao thức http không?
- 21. Phương pháp tĩnh có nhanh hơn không tĩnh?
- 22. So sánh số có nhanh hơn so sánh chuỗi không?
- 23. ANTLR 4 có nhanh hơn ANTLR 3 không?
- 24. Đúc ints vào enums trong C#
- 25. Tạo UITableViewCell nhanh hơn hoặc tải một chương trình từ một ngòi bút có nhanh hơn không?
- 26. là XmlFormat() luôn tốt hơn htmlEditFormat()?
- 27. nhanh hơn là gì?
- 28. Nhanh hơn javac/kiến?
- 29. Nhanh hơn JODCONVERTER
- 30. strlen nhanh hơn?
Vâng, bạn * làm * nhận được lợi ích bộ nhớ, mặc dù - một int sử dụng 32 bit, một số sử dụng 64 bit. – weltraumpirat
Ngoài ra, từ nguồn được liên kết của riêng bạn, đây là thông tin trả lời của senoculars: "' + -/*% 'là tất cả các phép toán Số. Nếu được sử dụng trên int/uint, chúng sẽ được chuyển thành Số bởi trình phát Flash trong nền và recast trở lại int/uint sau khi hoạt động hoàn tất '| &^>><< > >>' (bitwize) giữ lại các kiểu int/uint trong trình phát và được tối ưu hóa cho chúng cho các loại đó. " – weltraumpirat
weltraumpirat, bạn sẽ phải sử dụng rất nhiều biến cho sự khác biệt hai byte giữa int và số là một vấn đề, nhưng bạn tất nhiên là chính xác. :) – Almo