Seperti berdiri, banyak 'tingkat tinggi' fungsi string seperti IndexOf
, LastIndexOf
, Replace
dll diimplementasikan secara asli ketika mereka dapat ditulis dalam kode terkelola. Saya perhatikan ini dilakukan dengan salah satu string.Replace
kelebihan di f007485, jadi mungkin akan lebih baik untuk melakukan ini untuk membuat kode lebih mudah diakses oleh pendatang baru, jika mereka tidak terbiasa dengan bagaimana kode C++ dipetakan ke C#.
Kami telah melihat ini di masa lalu dan memindahkan semua yang dapat dipindahkan tanpa kehilangan kinerja yang signifikan. Bergerak lebih banyak tergantung pada memiliki pengoptimalan terkelola yang cukup baik untuk semua arsitektur coreclr.
Ini masuk akal untuk mempertimbangkan hanya sekali RyuJIT atau codegen yang lebih baik tersedia untuk semua arsitektur yang menjalankan coreclr (x86, x64, arm, arm64).
BTW: Implementasi terkelola dari semua metode string tersedia di corert repo.
@jkotas Ah, jadi itu sebabnya implementasi di corert repo dikelola; karena dikompilasi AOT dan dioptimalkan oleh kompiler C++, mereka mendapatkan codegen yang lebih baik daripada implementasi JIT yang masih dalam proses untuk beberapa platform yang Anda sebutkan (arm, arm64). Terima kasih telah menjelaskannya, masuk akal sekarang.
Penutupan dari tanggapan @jkota di atas tidak ada lagi yang bisa dilakukan di sini. @jamesqo jangan ragu untuk membuka kembali jika Anda berpikir sebaliknya.
Komentar yang paling membantu
Kami telah melihat ini di masa lalu dan memindahkan semua yang dapat dipindahkan tanpa kehilangan kinerja yang signifikan. Bergerak lebih banyak tergantung pada memiliki pengoptimalan terkelola yang cukup baik untuk semua arsitektur coreclr.
Ini masuk akal untuk mempertimbangkan hanya sekali RyuJIT atau codegen yang lebih baik tersedia untuk semua arsitektur yang menjalankan coreclr (x86, x64, arm, arm64).
BTW: Implementasi terkelola dari semua metode string tersedia di corert repo.