0
Seguir
265
Seguidores

Hablemos de la importancia de optimizar la estructura del código.

Creado el: 2021-05-22 05:57:14, Actualizado el:
comments   4
hits   1459

Hoy hablamos de la importancia de optimizar la estructura del código.

Para el arbitraje, las cosas más importantes son dos: 1) la tasa de utilización de los fondos; 2) la velocidad de compra.

En general, la velocidad de pedido se puede basar en la proximidad de los servidores de la bolsa, comprar una mejor red y resolver otros problemas. Pero en realidad, para la mayoría de los principiantes, solo optimizar la estructura del código puede hacer que la estrategia sea más rápida en decenas de milisegundos, no menos que el efecto de cambiar una mejor red. Sin embargo, el costo es mucho más bajo.

Sin embargo, cuando solo hay un par de transacciones, la optimización de la estructura del código a menudo aumenta menos de 1 ms, casi no se ve la diferencia.

La mejora de la utilización de fondos, a menudo requiere la misma cantidad de fondos para observar varios pares de transacciones al mismo tiempo, lo que provoca un aumento en el número de ciclos lógicos, en este momento los beneficios de la optimización de la estructura del código son evidentes. En general, la complejidad de las encuestas de múltiples transacciones en múltiples intercambios es O (n), que se puede reducir a O (n) o incluso O (n) mediante la optimización.*m) ((m) cuando los pares alcanzan cientos y la bolsa observa decenas al mismo tiempo.

Por ejemplo, un problema con el que me encuentro a menudo es que hay dos rutas de arbitraje, A-C y A-B-C, y que una de las rutas de arbitraje es la de la inversión. Los dos caminos necesitan ser calculados dos veces, una vez que se calcula el beneficio que puede traer el camino, suponiendo que son p1 y p2, una vez que se calcula el camino para cada intercambio específico y el precio y la cantidad de transacciones que requieren una facturación específica.

La forma más común de escribir es escribir primero una función, cuya función es calcular el beneficio, mencionar específicamente price y amount. Luego, llame a esta función en un ciclo, obteniendo el beneficio de cada camino y luego seleccione el beneficio más grande para el comercio.

Es evidente que solo necesitamos calcular el beneficio en la comparación, no necesitamos calcular el precio y la cantidad de la facturación desde el principio.

Por lo tanto, en la optimización, se puede separar la función de beneficio y la función de mención de 2 funciones. La función que llama a beneficio primero en el ciclo, obtiene el beneficio de cada camino, y luego selecciona el beneficio más grande para realizar transacciones. De esta manera, la función de mención de beneficio se llama desde cada ciclo, y se convierte en una sola llamada. La complejidad en tiempo cambia de O (n) a O (n + 1), n es el total de las rutas de arbitraje.

Luego, si se analiza el código más a fondo, se descubre que en general, debido a la existencia de otros trabajadores de arbitraje, una vez que un camino tiene ganancias, a menudo es arbitraje por otros. Por lo tanto, es muy difícil que haya varios caminos que tengan ganancias al mismo tiempo.

Así que podemos optimizar aún más la estrategia, establecer un ciclo, el ciclo de las declaraciones de if, si se encuentra que un camino tiene un beneficio, se rompe, y se calcula el número de menciones y el precio de este camino.

Entonces la complejidad se simplifica aún más de O{\displaystyle O} a n+1 para O{\displaystyle O} a m+1, m

Es decir, mediante una simple función de desglose, se puede analizar la estructura de optimización lógica y reducir la complejidad en tiempo de O{\displaystyle O} 2n) a O{\displaystyle O} n/2+1) ≠ .

En realidad, cuando se escribe código, hay una gran cantidad de escenarios que se pueden optimizar, y a menudo después de escribir el código, a menudo encuentro que la lógica de optimización existe para optimizar un O (n!) a O (n).*(n+1)). A veces incluso se puede optimizar una lógica que se ejecuta en cientos de milisegundos a menos de 1 ms.

Como un pequeño aporte de tiempo, se puede reducir considerablemente el intervalo entre las encuestas de estrategia, y también se recomienda optimizar la estructura del código.