0
fokus pada
265
Pengikut

Mari kita bincangkan tentang kepentingan mengoptimumkan struktur kod

Dicipta dalam: 2021-05-22 05:57:14, dikemas kini pada:
comments   4
hits   1459

Oleh kerana kursus terbuka telah dilancarkan, seringkali terdapat beberapa masalah kecil. Hari ini kita akan bercakap tentang pentingnya mengoptimumkan struktur kod.

Bagi penarikan, dua perkara yang paling penting ialah: 1) penggunaan dana; 2) kelajuan pembelian;

Kecepatan pengambilan pesanan biasanya dapat diselesaikan dengan bergantung pada pelayan yang berdekatan dengan bursa, membeli rangkaian yang lebih baik. Tetapi sebenarnya bagi kebanyakan pemula, hanya mengoptimumkan struktur kod, anda dapat membuat strategi lebih cepat beberapa puluh milidetik, sama sekali tidak kurang daripada menukar rangkaian yang lebih baik.

Walau bagaimanapun, apabila hanya ada satu pasangan yang diperdagangkan, struktur kod yang dioptimumkan sering meningkat kurang dari 1 ms, hampir tidak dapat dilihat.

Peningkatan penggunaan dana, yang sering memerlukan jumlah dana yang sama untuk mengamati beberapa pasangan perdagangan pada masa yang sama, akan menyebabkan peningkatan jumlah pusingan logik, dan manfaat struktur kod yang dioptimumkan akan menjadi jelas. Kompleksiti umum untuk beberapa pertukaran adalah O ((n!), Dengan pengoptimuman, ia dapat dikurangkan kepada O ((n! / ((m!)) atau O ((n*m) ((m) apabila pasangan dagangan mencapai beratus-ratus dan bursa memerhatikan berpuluh-puluh pada masa yang sama.

Sebagai contoh, saya sering berhadapan dengan satu masalah, iaitu terdapat dua laluan lelang iaitu A-C dan A-B-C, dan satu laluan lelang ialah A-B-C dan A-B-C. Kedua-dua laluan perlu dikira dua kali, sekali untuk mengira keuntungan yang boleh dibawa oleh laluan, dengan asumsi p1 dan p2, sekali untuk mengira harga dan jumlah yang diperlukan oleh setiap bursa dan urus niaga mereka untuk invois tertentu.

Cara yang paling biasa ialah dengan menuliskan fungsi yang berfungsi untuk mengira keuntungan, dengan menyebut harga dan jumlah. Kemudian memanggil fungsi ini secara bergilir-gilir, mendapatkan keuntungan dari setiap laluan, kemudian memilih keuntungan terbesar untuk berdagang.

Jelas sekali, kita hanya perlu mengira keuntungan dalam perbandingan, dan tidak perlu mengira harga dan jumlah tempahan pada mulanya.

Oleh itu, apabila dioptimumkan, anda boleh membahagikan fungsi profit dan invoice menjadi 2 fungsi. Fungsi yang memanggil keuntungan terlebih dahulu, mendapat keuntungan dari setiap laluan, dan kemudian memilih keuntungan terbesar untuk berdagang.

Kemudian jika anda menganalisis kod lebih lanjut, anda akan mendapati bahawa dalam kebanyakan kes, apabila terdapat keuntungan di satu laluan, ia sering diarbitrasikan oleh orang lain. Oleh itu, sangat sukar untuk mempunyai lebih banyak laluan yang sama-sama menguntungkan.

Jadi, kita boleh mengoptimumkan lagi strategi ini, dengan membuat satu set kata-kata loop dan loop if, dan jika kita dapati satu laluan mempunyai keuntungan, kita akan break keluar, dan kemudian kita akan mengira jumlah dan harga rujukan untuk laluan tersebut.

Oleh itu, kerumitan O ((n + 1) disederhanakan lagi kepada O ((m + 1), m < n. Apabila peluang di setiap bursa sama, m adalah kira-kira n / 2, iaitu kerumitan O ((n / 2 + 1)

Iaitu, dengan fungsi pembahagian mudah, analisis struktur pengoptimuman logik, kerumitan masa dapat dikurangkan dari O (((2n) kepada O (((n/2 + 1) .

Sebenarnya apabila menulis kod, terdapat banyak senario yang boleh dioptimumkan, dan saya sering menulis kod selepas selesai menulis, dan sering mendapati logik pengoptimuman yang ada untuk mengoptimumkan O (n!) ke O (n).*(n+1)). Kadang-kadang juga boleh mengambil satu logik yang perlu dijalankan beberapa ratus milidetik, dan mengoptimumkannya dalam 1 ms.

Sebagai satu usaha kecil untuk mengurangkan jarak antara tinjauan pendapat dan juga untuk mengoptimumkan struktur kod.