Rumah >pembangunan bahagian belakang >C++ >Mengapa Rangka Kerja Entiti Saya 6 Operasi Async 10x Lebih Lambat Daripada Rakan Sejawat Segeraknya?
Artikel ini meneroka masalah biasa yang dihadapi apabila menggunakan Rangka Kerja Entiti (EF) 6 operasi tak segerak: kemerosotan prestasi yang ketara berbanding dengan operasi segerak. Kami akan menyelami punca kelakuan ini dan menyediakan penyelesaian.
Pengguna sering mengalami kelembapan yang ketara, malah sepuluh kali atau lebih, apabila menukar pertanyaan Rangka Kerja Entiti kepada persamaan tak segerak mereka (cth. menggunakan ToListAsync() dan bukannya ToList()).
Selepas menyiasat menggunakan SQL Server Profiler, saya mendapati bahawa pertanyaan SQL asas kekal sama untuk kedua-dua panggilan EF segerak dan tak segerak. Walau bagaimanapun, operasi tak segerak mengambil masa yang lebih lama untuk dilaksanakan.
Perbezaan prestasi adalah disebabkan oleh butiran pelaksanaan dalaman bagi operasi tak segerak EF 6. Tidak seperti versi segerak, versi tak segerak menggunakan mekanisme penimbal untuk membaca data daripada pangkalan data dalam cara yang tidak berurutan. Pendekatan ini bertujuan untuk meningkatkan prestasi dalam beberapa kes, tetapi boleh memberi kesan buruk apabila berurusan dengan lajur besar data binari.
Proses penimbalan melibatkan penciptaan sejumlah besar tugas tak segerak, yang menghasilkan banyak overhed dari segi penciptaan tugas, penyegerakan dan penggunaan benang. Overhed ini, digabungkan dengan bacaan data tidak berurutan, mengakibatkan kemerosotan prestasi yang ketara.
Untuk mengurangkan isu ini, adalah disyorkan untuk mengelak daripada menggunakan operasi tak segerak EF 6 dengan jadual yang mengandungi lajur data binari. Sebaliknya, laksanakan pertanyaan secara serentak, menggunakan TaskCompletionSource
Walaupun operasi tak segerak EF 6 boleh meningkatkan prestasi dalam beberapa kes, cara ianya dilaksanakan pada masa ini boleh menyebabkan overhed yang ketara apabila memproses data binari yang besar. Pembangun harus sedar tentang had ini dan mempertimbangkan untuk menggunakan alternatif jika perlu.
Atas ialah kandungan terperinci Mengapa Rangka Kerja Entiti Saya 6 Operasi Async 10x Lebih Lambat Daripada Rakan Sejawat Segeraknya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!