코드 구조를 최적화하는 것의 중요성에 대해 이야기하십시오.

저자:조카, 창작: 2021-05-22 05:57:14, 업데이트:

공개된 코스로 인해 종종 약간의 문제가 발생합니다. 오늘 우리는 코드 구조를 최적화하는 것의 중요성에 대해 이야기 할 것입니다.

이윤을 위해 가장 중요한 것은 두 가지입니다: 1.자금 활용률 2.구매 속도 2.

주문 속도는 일반적으로 거래소의 가까운 서버, 더 나은 네트워크를 구입하는 등의 문제를 해결할 수 있습니다. 그러나 실제로 대부분의 신인에게는 코드 구조를 최적화하는 것만으로 전략이 수십 밀리 초 더 빠르면 더 나은 네트워크를 교환하는 것보다 훨씬 더 적은 효과를 얻을 수 있습니다. 그러나 비용은 훨씬 낮습니다.

그러나 하나의 트랜잭션 쌍만 있으면, 최적화된 코드 구조의 속도는 1ms 미만 증가하는 경우가 많으며, 거의 차이가 보이지 않습니다.

자금 활용률의 향상, 같은 자금이 동시에 여러 거래 쌍을 관찰하는 것을 필요로 하는 경우, 논리 루프의 수를 증가시킬 수 있다. 이 경우 코드 구조를 최적화하는 이점이 분명하다. 일반적으로 대부분의 거래소에서 거래 쌍을 동시에 관찰하는 경우, 거래 쌍이 수백 개에 달할 때, 거래 쌍이 수십 개에 달할 때 완전히 O ((n!/(m!) 로 감소시킬 수 있다.

제가 자주 겪는 문제 중 하나는 A-C와 A-B-C가 두 가지 수첩으로 이루어져 있다는 것입니다. 두 개의 경로는 각각 두 번 계산되어야 하며, 한 번 계산하는 경로는 수익을 가져올 수 있으며, p1과 p2라고 가정하면, 한 번 계산하는 경로는 각각의 거래소와 거래에 대한 특정 요금 요금과 금액에 대해 계산된다.

가장 흔한 글쓰기 방식은 먼저 수익을 계산하는 함수를 작성하는 것입니다. 이 함수는 특정 가격과 금액을 지정합니다. 그리고 순환으로 호출하여 각 경로의 수익을 얻으며 최대 수익을 선택하여 거래를 수행합니다.

분명히, 우리는 비교를 할 때 수익을 계산할 필요가 있습니다. 처음부터 청구 가격과 금액을 계산할 필요가 없습니다.

따라서 최적화 시, 이윤과 소환을 2개의 함수로 분할할 수 있다. 먼저 소환을 하는 이윤의 함수를 회전하여 각 경로의 이윤을 얻으며, 그 다음 가장 큰 이윤을 선택하여 거래를 수행한다. 이 때문에 논리적으로 소환하는 함수는 각 회전에서 호출을 한 번만 하는 함수로 변한다. 시간 복잡성은 O (((2n) 에서 O (((n+1) 로 변하고, n은 집합의 이윤 경로의 총수이다.

그리고 코드를 더 자세히 분석하면, 보통 다른 유리한 노동자가 존재하기 때문에 어떤 경로가 수익성이 있는 경우, 다른 경로가 수익성이 있는 경우는 거의 없습니다.

그래서 우리는 전략을 더욱 최적화할 수 있습니다. 루킹, 루킹 리가if 문장을 설정하고, 만약 어떤 경로에서 이윤이 발견된다면, 브레이크를 해내고, 그 경로의 청약 수와 가격을 계산할 수 있습니다.

그러면 복잡성은 O ((n+1) 에서 O ((m+1) 로 더욱 단순화됩니다. m

즉 간단한 분해 함수를 통해 논리 최적화 구조를 분석하여 시간 복잡성을 O ((2n) 에서 O ((n/2+1) 로 줄일 수 있다.

실제로 코드를 작성할 때 최적화 할 수있는 많은 시나리오가 있습니다. 코드를 작성 할 때 종종 작성 한 후, 종종 최적화 논리를 작성 할 때 어떤 O ((n!) 의 최적화를 O ((n* ((n+1)) 로 최적화 할 수있는 가능성이 있다는 것을 발견했습니다. 때로는 수백 밀리초가 소요되는 논리를 1ms 내에 최적화 할 수도 있습니다.

조금만 시간을 내면 전략적 질문 간격을 크게 줄일 수 있다는 점, 코드 구조를 최적화하는 것이 좋습니다.


더 많은

뼈 칼어떻게 하면 단발의 상황을 효율적으로 방지할 수 있을까요?

조카화폐 거래소에 도착하는 지연

알레즈-z이 지연은 심층 데이터의 지연을 의미합니까?

조카기록 지연, 어떤 값을 초과하면 당시에 할당이 진행되지 않습니다. 또한 지연 고도의 순서에 따라 서열을 올립니다.