0
fokus pada
265
Pengikut

Mari kita bicarakan tentang pentingnya mengoptimalkan struktur kode

Dibuat di: 2021-05-22 05:57:14, diperbarui pada:
comments   4
hits   1458

Karena ada kursus terbuka, seringkali ada masalah kecil. Hari ini kita akan membahas tentang pentingnya mengoptimalkan struktur kode

Ada dua hal yang paling penting dalam taruhan, yaitu: 1) tingkat pemanfaatan dana; 2) kecepatan penarikan;

Kecepatan pengambilan pesanan umumnya dapat bergantung pada server yang dekat dengan bursa, membeli jaringan yang lebih baik, dan sebagainya. Tetapi sebenarnya bagi sebagian besar pemula, hanya dengan mengoptimalkan struktur kode, Anda dapat membuat strategi beberapa puluh milidetik lebih cepat, sama sekali tidak kalah dengan efek dari mengganti jaringan yang lebih baik. Namun, biayanya jauh lebih rendah.

Namun, ketika hanya ada satu pasangan transaksi, struktur kode yang dioptimalkan cenderung meningkat kurang dari 1 ms, hampir tidak ada perbedaan.

Pada saat itu, manfaat dari struktur kode yang dioptimalkan menjadi jelas. Umumnya, kompleksitas poling multi-pertukaran multi-perdagangan adalah O ((n!), Dengan pengoptimalan sepenuhnya dapat dikurangi menjadi O ((n! / m!)) atau bahkan O ((n*m) ((m) Ketika pasangan perdagangan mencapai ratusan dan bursa mengamati puluhan sekaligus.

Sebagai contoh, ada dua jalur Arbitrase, A-C dan A-B-C, yang mana satu di antaranya adalah Arbitrase dan yang lainnya adalah Arbitrase. Kedua jalur masing-masing perlu dihitung dua kali, satu kali menghitung keuntungan yang dapat dibawa oleh jalur, dengan asumsi p1 dan p2, satu kali menghitung jalur khusus untuk setiap bursa dan transaksi untuk kebutuhan spesifik untuk invoice price dan amount.

Cara yang paling umum adalah dengan menuliskan sebuah fungsi yang berfungsi untuk menghitung keuntungan, dengan menyebutkan price dan amount. Kemudian, memanggil fungsi ini secara berulang, mendapatkan keuntungan dari setiap jalur, dan kemudian memilih keuntungan terbesar untuk melakukan perdagangan.

Jelas, kita hanya perlu menghitung profit untuk membandingkannya, dan tidak perlu menghitung harga dan jumlah dari awal.

Jadi dalam pengoptimalan, dapat dipisahkan profit dan invoice 2 fungsi. Pertama, fungsi yang memanggil profit, mendapatkan keuntungan dari setiap jalur, dan kemudian memilih profit terbesar untuk melakukan perdagangan. Dengan demikian, secara logis, fungsi invoice akan dipanggil dari setiap putaran, menjadi hanya dipanggil sekali.

Kemudian jika Anda menganalisis kode lebih lanjut, Anda akan menemukan bahwa dalam banyak kasus, jika ada keuntungan dari satu jalur, maka itu akan menjadi keuntungan dari orang lain. Jadi sangat sulit untuk memiliki banyak jalur yang menguntungkan.

Jadi kita bisa mengoptimalkan strategi kita lebih jauh, kita bisa mengatur sebuah loop, sebuah loop dengan if statement, dan jika kita menemukan sebuah path ada profit, kita akan break out, dan kemudian kita akan menghitung jumlah dan harga dari path tersebut.

Kompleksitas akan lebih sederhana dari O ((n + 1) menjadi O ((m + 1), m < n. Ketika peluang di bursa sama, m adalah sekitar n / 2, maka kompleksitas akan berkurang menjadi O ((n / 2 + 1)

Dengan fungsi pembagian sederhana, analisis struktur optimasi logis, kompleksitas waktu dapat dikurangi dari O (((2n) menjadi O (((n/2+1) }}.

Sebenarnya ketika menulis kode, ada banyak skenario yang bisa dioptimalkan, dan saya sering menulis kode setelah selesai, dan sering menemukan bahwa ada logika optimalisasi yang dapat mengoptimalkan suatu O (n!) menjadi O (n).*(n+1)) kemungkinan. Kadang-kadang bahkan dapat mengambil beberapa ratus milidetik untuk menyelesaikan logika, dioptimalkan dalam 1 ms.

Sebagai salah satu cara untuk mengurangi waktu yang dibutuhkan untuk melakukan polling, saya sarankan untuk mengoptimalkan struktur kode.