2008-10-29 22 views
6

Theo tôi biết không có cách nào để gợi ý trình biên dịch C# để nội tuyến một chức năng cụ thể và tôi đoán nó giống như thiết kế. Tôi cũng nghĩ rằng không để cho các lập trình viên xác định nội tuyến và cái gì không phải là một ý tưởng hay, vì nó ngụ ý rằng bạn nghĩ bạn thông minh hơn trình biên dịch JIT (tôi tôn trọng những người thực sự) , nhưng, điều gì sẽ xảy ra nếu tôi muốn xác định rằng một phần quan trọng của mã cần phải cực kỳ nhanh chóng với bất kỳ chi phí nào, bất kể làm thế nào để đạt được nó trên máy mục tiêu? Tính đến nay bạn không thể làm một điều như vậy và tôi tự hỏi nếu cả hai ngôn ngữ C# và JIT sẽ bao giờ hỗ trợ tính năng này.Có cách nào để thực thi hàm nội tuyến trong C#?

Trong trường hợp của tôi, tôi biết máy đích là gì và tôi biết rằng chức năng nội tuyến sẽ giúp cải thiện hiệu suất. Điều này khiến tôi nghĩ rằng cách duy nhất để thực thi chức năng nội tuyến là tìm hiểu trong hoàn cảnh nào JIT sẽ làm điều đó nhưng tôi cũng không nghĩ đó là một ý tưởng hay,

Bất kỳ ánh sáng nào về chủ đề sẽ được đánh giá cao.

Cảm ơn.

Trả lời

10

Câu trả lời ngắn: không

Long trả lời: http://blogs.msdn.com/ericgu/archive/2004/01/29/64644.aspx

Tiêu chuẩn nội tuyến: http://blogs.msdn.com/davidnotario/archive/2004/11/01/250398.aspxhttp://blogs.msdn.com/ericgu/archive/2004/01/29/64717.aspx

Lưu ý rằng trong hai liên kết cuối cùng về các tiêu chí cho nội tuyến, là về cấu trúc không phải là inlines đã lỗi thời; cập nhật thông tin có thể được tìm thấy tại địa chỉ: http://blogs.msdn.com/vancem/archive/2008/05/12/what-s-coming-in-net-runtime-performance-in-version-v3-5-sp1.aspx

3
if(performance < ACCEPTABLE){ 
    if(profiler.showsAffectOfMethodCallOverhead() && seriouslyWeDoubleChecked()){ 
     if(runtimeContext.isReallyStableAndNotProneToChange() && weNeedToGetThisThingBatOutOfHellFast()){ 
      return thisIsOneOfTheFewTimesWhenANativeExternalFunctionMayBeWorthIt(); 
     } 
    } 
} 
return dontWorryAboutIt(); 

Nếu bạn đang thực hiện con đường hiếm, thoát ra khỏi C hoặc ASM của bạn.

Các vấn đề liên quan