Nikolai Semko : 사실 모든 알고리즘은 동일합니다. 모든 사람이 요소별로 배열 요소 수정을 수행하고 모든 사람이 Fedoseev 변형을 사용하는 경향이 있습니다. 그는 추가로 아무것도 없습니다. 저에게만 ArrayCopy를 사용하는 블록에서 발생하므로 속도 향상이 존재합니다.
그리고 베드로는 어떻습니까? 모두 "찢어"? 아무도 그의 코드를 체커에 삽입하지 않았습니다. 그가 어떻게, 그리고 얼마나 많은 사람들을 게시판에 흩어놓았는지 궁금합니다.
그리고 나는 그의 상상의 비행을 결코 이해하지 못했습니다. 그는 완성된 기능을 제공하지 않았습니다. 그리고 내가 그를 위해 쓰기를 마치면, 그들은 내가 그곳에서 모든 것을 다시 만들었다고 다시 나를 비난할 것입니다. ))
글쎄요, 모바일에서 그의 코드를 보니 그가 "직접적으로" 작성하고 있다는 느낌을 받았습니다. 따라서 그는 기능을 제공하지 않았습니다. 그는 모든 것을 연속적으로 가지고 있습니다. 그리고 그의 스크립트에는 함수가 아니라 직선 코드가 있습니다. 그런 스크립트가 기능을 내포하지 않을 수도 있다는 것은 분명하지만... goto만으로는 날아가기에 충분하지 않다고 생각합니다 :)
그리고 베드로는 어떻습니까? 모두 "찢어"? 아무도 그의 코드를 체커에 삽입하지 않았습니다. 그가 어떻게, 그리고 얼마나 많은 사람들을 게시판에 흩어놓았는지 궁금합니다.
그럼에도 불구하고 그는 Peter의 옵션을 마스터했습니다.
int PeterArray( int &Arr[], constint val) // вариант Peter Konov
{
int deleted= 0 ,q= 0 ;
for ( int a1= 0 ; a1< ArraySize (Arr); a1++)
{
if (deleted)Arr[q]=Arr[q+deleted];
if (Arr[q]==val){deleted++; q--;}
q++;
}
ArrayResize (Arr,q);
return (q);
}
아주 컴팩트하고 제대로 작동합니다. 피터에게 경의를 표합니다. 하지만 속도면에서는 끝에서 2위를 차지한다. 또는이 지점 소유자의 원래 버전을 제외하고 속도에 완전히 부적합한 끝에서 첫 번째 장소.
2018.11 . 1314 : 08 : 32.857 ArrayDeleteValue (EURUSD,D1) вариант Pastushak: Контрольная сумма = 495882514 ; элементов - 999010 ; время выполнения = 150492 микросекунд
2018.11 . 1314 : 08 : 32.861 ArrayDeleteValue (EURUSD,D1) вариант Korotky: Контрольная сумма = 495882514 ; элементов - 999010 ; время выполнения = 2441 микросекунд
2018.11 . 1314 : 08 : 32.865 ArrayDeleteValue (EURUSD,D1) вариант Fedoseev: Контрольная сумма = 495882514 ; элементов - 999010 ; время выполнения = 1852 микросекунд
2018.11 . 1314 : 08 : 32.867 ArrayDeleteValue (EURUSD,D1) вариант Semko: Контрольная сумма = 495882514 ; элементов - 999010 ; время выполнения = 779 микросекунд
2018.11 . 1314 : 08 : 32.871 ArrayDeleteValue (EURUSD,D1) вариант Nikitin: Контрольная сумма = 495882514 ; элементов - 999010 ; время выполнения = 2374 микросекунд
2018.11 . 1314 : 08 : 32.876 ArrayDeleteValue (EURUSD,D1) вариант Vladimir: Контрольная сумма = 495882514 ; элементов - 999010 ; время выполнения = 3720 микросекунд
2018.11 . 1314 : 08 : 32.885 ArrayDeleteValue (EURUSD,D1) вариант Peter: Контрольная сумма = 495882514 ; элементов - 999010 ; время выполнения = 7266 микросекунд
사실 모든 알고리즘은 동일합니다. 모든 사람이 요소별로 배열 요소 수정을 수행하고 모든 사람이 Fedoseev 변형을 사용하는 경향이 있습니다. 그는 추가로 아무것도 없습니다.
저에게만 ArrayCopy를 사용하는 블록에서 발생하므로 속도 향상이 존재합니다.
그리고 베드로는 어떻습니까? 모두 "찢어"? 아무도 그의 코드를 체커에 삽입하지 않았습니다. 그가 어떻게, 그리고 얼마나 많은 사람들을 게시판에 흩어놓았는지 궁금합니다.
그 이유를 곰곰이 생각해보고 0.1%가 아닌 1/3의 요소가 삭제되도록 2줄을 수정했습니다.
결론: 숫자 사이에 임의의 거리가 있는 배열의 주소를 계산하는 것은 행의 요소를 처리하는 것보다 여전히 나쁩니다. 주어진 단계, 특히 1단계에서 컴파일러는 이를 최적화할 수 있습니다.
그리고 무슨 말인지 이해합니다. 어쩐지 그 문장이 그리웠다.
예, 물론 이것은 이해할 수 있지만 모든 세 번째 요소를 버려야 하는 경우에도 마찬가지입니다(그런 다음 ArrayCopy 가 작동을 멈추고 이득이 사라짐). 다른 그림이 있습니다.
Pavlov에는 실제로 작동하지 않는 옵션이 있지만 올바른 체크섬을 제공한 다음 잘못된 체크섬을 제공하기도 합니다.
그리고 베드로는 어떻습니까? 모두 "찢어"? 아무도 그의 코드를 체커에 삽입하지 않았습니다. 그가 어떻게, 그리고 얼마나 많은 사람들을 게시판에 흩어놓았는지 궁금합니다.
그리고 나는 그의 상상의 비행을 결코 이해하지 못했습니다. 그는 완성된 기능을 제공하지 않았습니다. 그리고 내가 그를 위해 쓰기를 마치면, 그들은 내가 그곳에서 모든 것을 다시 만들었다고 다시 나를 비난할 것입니다. ))
그리고 나는 그의 상상의 비행을 결코 이해하지 못했습니다. 그는 완성된 기능을 제공하지 않았습니다. 그리고 내가 그를 위해 쓰기를 마치면, 그들은 내가 그곳에서 모든 것을 다시 만들었다고 다시 나를 비난할 것입니다. ))
글쎄요, 모바일에서 그의 코드를 보니 그가 "직접적으로" 작성하고 있다는 느낌을 받았습니다. 따라서 그는 기능을 제공하지 않았습니다. 그는 모든 것을 연속적으로 가지고 있습니다. 그리고 그의 스크립트에는 함수가 아니라 직선 코드가 있습니다. 그런 스크립트가 기능을 내포하지 않을 수도 있다는 것은 분명하지만... goto만으로는 날아가기에 충분하지 않다고 생각합니다 :)
그러나 이것들은 단지 나의 감정일 뿐입니다.
Pavlov의 버전이 수정되었습니다.
당신은 이상한 가치를 가지고 있습니다. 프로파일링 후 스크립트를 실행했거나 코드를 다시 컴파일하지 않고 디버거를 실행했습니까?
나는 다음과 같이 얻는다.
그리고 귀하의 변형에서 잘못된 체크섬을 생성합니다. 그리고 일반적으로 어레이를 추가로 생성하면 이점이 없지만 프로세스가 느려지고 리소스가 추가로 소모됩니다.
수정했습니다.
나는 그것을 여러 번 실행했는데 결과가 매달려 있습니다. 컴퓨터가 많이로드되어 토요일에만 출시됩니다. 다른 사람에게 확인하는 것이 좋습니다. 그러나 이제 체크섬이 일치합니다. 매우 희소한 정크 값의 경우(0.1%)
2018.11.13 21:35:16.888 del_2 (GBPUSD.m,H1) 파투샤크 변형: 체크섬 = 497057781; 요소 - 998984; 실행 시간 = 418662마이크로초
2018.11.13 21:35:16.898 del_2 (GBPUSD.m,H1) Korotky 변형: 체크섬 = 497057781; 요소 - 998984; 실행 시간 = 10683마이크로초
2018.11.13 21:35:16.918 del_2 (GBPUSD.m,H1) Fedoseev 변형: 체크섬 = 497057781; 요소 - 998984; 실행 시간 = 9740 마이크로초
2018.11.13 21:35:16.928 del_2 (GBPUSD.m,H1) Semko 변형: 체크섬 = 497057781; 요소 - 998984; 실행 시간 = 4691마이크로초
2018.11.13 21:35:16.944 del_2 (GBPUSD.m,H1) Pavlov 변형: 체크섬 = 497057781; 요소 - 998984; 실행 시간 = 12512마이크로초
2018.11.13 21:35:16.957 del_2 (GBPUSD.m,H1) 니키틴 변형: 체크섬 = 497057781; 요소 - 998984; 실행 시간 = 10720마이크로초
2018.11.13 21:35:16.978 del_2 (GBPUSD.m,H1) 블라디미르 옵션: 체크섬 = 497057781; 요소 - 998984; 실행 시간 = 17197 마이크로초
세 번째
2018.11.13 21:57:17.838 del_2 (GBPUSD.m,H1) 파투샤크 변형: 체크섬 = 668222; 요소 - 667065; 실행 시간 = 65732마이크로초
2018.11.13 21:57:17.838 del_2 (GBPUSD.m,H1) Korotky 변형: 체크섬 = 668222; 요소 - 667065; 실행 시간 = 4757 마이크로초
2018.11.13 21:57:17.848 del_2 (GBPUSD.m,H1) Fedoseev 변형: 체크섬 = 668222; 요소 - 667065; 실행 시간 = 4815마이크로초
2018.11.13 21:57:17.858 del_2 (GBPUSD.m,H1) Semko 변형: 체크섬 = 668222; 요소 - 667065; 실행 시간 = 5812마이크로초
2018.11.13 21:57:17.858 del_2 (GBPUSD.m,H1) Pavlov 변형: 체크섬 = 1001157; 요소 - 667065; 런타임 = 0마이크로초
2018.11.13 21:57:17.858 del_2 (GBPUSD.m,H1) 니키틴 변형: 체크섬 = 668222; 요소 - 667065; 실행 시간 = 4749마이크로초
2018.11.13 21:57:17.868 del_2 (GBPUSD.m,H1) 블라디미르 옵션: 체크섬 = 668222; 요소 - 667065; 실행 시간 = 9814마이크로초
Pavlov는 다시 실패합니다.
대부분의 경우 for 루프를 통한 통과 속도를 높이는 것에 대한 나의 결론은 MQL 언어에 대해 올바르지 않습니다.
그리고 추가 배열을 생성하면 불필요한 배열을 대량 삭제하는 실제 트랜잭션의 기간을 줄여 필요한 시작 순간까지 배열을 변경하지 않고 유지해야 합니다. 지금까지 데이터 보안은 여기에서 논의되지 않았습니다.
그리고 베드로는 어떻습니까? 모두 "찢어"? 아무도 그의 코드를 체커에 삽입하지 않았습니다. 그가 어떻게, 그리고 얼마나 많은 사람들을 게시판에 흩어놓았는지 궁금합니다.
그럼에도 불구하고 그는 Peter의 옵션을 마스터했습니다.
아주 컴팩트하고 제대로 작동합니다. 피터에게 경의를 표합니다.
하지만 속도면에서는 끝에서 2위를 차지한다. 또는이 지점 소유자의 원래 버전을 제외하고 속도에 완전히 부적합한 끝에서 첫 번째 장소.
:-) 순서를 지키려고 하지 않으면 시간은 O(1) , 모든 루프의 총 단계 수 = 배열 크기
너무 게으른 코딩 :-)
1. 왼쪽에서 오른쪽으로 첫 번째 3구를 찾고 있습니다.
2. 발견되면 오른쪽에서 왼쪽으로 3이 아닌 항목을 찾습니다. 발견된 항목을 3의 위치에 복사합니다.
1,2가 교차할 때까지 계속하고 복사본 수만큼 배열을 자릅니다.
이념적으로 이것은 정확히 " 버블 정렬 "의 1/2입니다 :-) 복사하는 대신 스왑을 수행하면 출력이 부분적으로 정렬된 배열입니다(3개 모두 오른쪽으로 이동됨)
또 다른 개선 사항:
죄송합니다. 그들은 당신이 훌륭한 마케터지만 프로그래머는... 나보다 더 나쁘다고 합니다.
1. 삭제된 내부 정수 변수는 초기화되지 않습니다. 즉, 0과 같지만 보장되지는 않습니다. 루프에서 백시프트는 두 가지 이유로(처음으로) 발생하지 않습니다.
2. (메인) 먼저 배열의 요소를 이동한 다음 삭제된 변수의 값을 늘리면 주기가 있고 다음 이동은 필요 이상으로 1만큼 발생합니다. 즉, 코드가 눈사태처럼 원래 배열을 파괴합니다.
배열에 추가 요소가 없습니다.
배열에서 모든 추가 요소:
죄송합니다. 그들은 당신이 좋은 마케팅 담당자이지만 프로그래머는 ... 나보다 더 나쁘다고 말합니다.
Alexey, 당신은 정말로 젊은 인재를 죽이고 있습니다 ...
이 마케터는 5년 동안 판매를 시작하지 못했습니다. 그리고 당신은 프로그래머로서 그가 더 나쁘다고 말합니다 :-)