서브 모듈을 호출하는 perl 코드를 수천만 번 작성합니다. 서브 모듈은 계산 집약적이며 런타임이 매우 느립니다. 서브 모듈이하는 일을 정확히 수행하는 C++ 프로그램을 발견했으며 서브 모듈을 C++ 프로그램으로 대체하고 싶습니다. 프로그램 인터페이스를위한 XS 코드를 작성해야하는지 궁금합니다. Perl 코드에서 "system"명령을 사용하여 C++ 프로그램을 직접 호출하기 위해 성능을 많이 저하 시키는가? 감사합니다.Perl 코드에서 C++ 프로그램 호출
답변
외부 프로그램을 시작하면 항상 함수 호출을 만드는 것보다 속도가 느려집니다. 속도에 신경을 쓰면 "수천만 번"프로그램을 시작하는 것이 문제가되지 않습니다.
수천만 번 실행되는 루프가 외부 프로그램 내부에 있으면 한 번만 실행해도됩니다. 그러나 이제는 외부 프로그램에 수천만 개의 데이터를 가져 오는 방법과 결과를 다시 얻는 방법과 같은 또 다른 문제가 있습니다. 외부 프로그램이기 때문에 텍스트 형식으로 데이터를 전달해야합니다. 즉, 스크립트가 데이터를 텍스트로 변환하고 외부 프로그램으로 전달해야합니다. 외부 프로그램은 그것을 파싱하여 원래의 표현으로 변환하고, 계산을 수행하고, 결과를 텍스트로 변환하여 리턴해야합니다. 스크립트는 결과를 구문 분석해야합니다.
system
은 어쨌든이 도구에 적합하지 않습니다. 출력보다 프로그램을 실행하는 데 가장 적합합니다 (예 : rm -rf /
). 프로그램의 결과물을 읽고 싶다면 백틱 (``
a.k.a. qx{}
)이나 파이핑을 원할 수도 있습니다 (perldoc perlipc
의 "open()
IPC 사용하기"참조).
외부 프로그램이 대화 형이고 루프가 perl 코드에있는 경우 루프 앞에 한 번 'open'을 사용하고 각 반복에 대한 지침/데이터를 전달할 가치가 있습니다 게다가. 내가 맞습니까? – rubikonx9
고려해야 할 가치가 있지만 양방향 의사 소통에는 문제가 있습니다. "perldoc perlipc"의 "다른 프로세스와의 양방향 통신"을 참조하십시오. – Bulletmagnet
@Bulletmagnet 답변 해 주셔서 감사합니다. 나는 충분한 평판이 없기 때문에 나는 당신의 대답을 투표 할 수 없다는 점에 유감이다. – user4147776
- 1. C 코드에서 WCF 호출
- 2. Perl 스크립트에서 다른 프로그램 호출
- 3. 의사 코드에서 C# 프로그램
- 4. C# 코드에서 확인 팝업 호출
- 5. .net DLL을 C# 코드에서 호출
- 6. objective-c 코드에서 javascript 호출
- 7. 내 C 코드에서 프로그램 실행
- 8. C++ : 외부 응용 프로그램 호출 C++ 프로그램
- 9. C++ 라이브러리 코드에서 Objective-C 함수 호출
- 10. C++ 코드에서 Tiny C 컴파일러 호출
- 11. 일반 C 코드에서 C++ activex dll 호출
- 12. C#/WPF에서 C++ 프로그램 호출
- 13. swi_prolog C++ 프로그램 호출
- 14. PHP에서 C 프로그램 호출
- 15. IOS 프로그램 브라우저 호출 코드에서 사파리 브라우저를 호출
- 16. perl 함수 호출
- 17. Objective-C 코코아에서 Perl 라이브러리 호출
- 18. 0이 아닌 반환 코드에서 Perl 백릿 트래핑
- 19. MC++ 코드에서 C# DLL의 함수 호출
- 20. C# 코드에서 Babel .Net Obfuscator 호출
- 21. C# : 코드에서 호출 계층 구조에 액세스
- 22. XMLHTTPRequest, C# 코드에서 단일 메서드 호출?
- 23. tolua ++ C++ 코드에서 Lua 함수 호출
- 24. C#의 다른 코드에서 Button 코드 호출
- 25. Java 코드에서 C++ 호출 문제 (Android)
- 26. C++ app 코드에서 Linux syscalls를 호출 하시겠습니까?
- 27. 조건부의 C# 코드에서 HTML 페이지 호출
- 28. 자바 스크립트 코드에서 C# 이벤트 호출
- 29. Delphi 코드에서 Visual C++ DLL 함수 호출
- 30. 어셈블리 코드에서 라이브러리의 C 함수 호출
확인 : https://metacpan.org/pod/Inline:CPP – jm666
@ jm666 의견을 보내 주셔서 감사합니다. 이 모듈은 Perl에 C 코드를 임베드하기위한 노력을 줄이는 것으로 보입니다. XS를 사용해야하는 경우 유용합니다. 그러나, 거기에 내 질문에 대한 답변을 찾을 수 없습니다 ... – user4147776