대부분의 익명 함수가 JIT 컴파일 될 수없고 최적화되지 않는 이유는 무엇입니까?


10

함수 프로그래밍에 대한 https://techfindings.one/archives/2652 를 읽었으며 다음 과 같이 나타났습니다.

익명 함수는 종종 JIT 컴파일 할 수 없으며 최적화되지 않습니다.

누군가 이것이 왜 그런지 설명해 줄 수 있습니까?



나는 downvote가 여기에 정당화되지 않았고 링크가 내 질문에 적용될 수 없다고 생각합니다. JIT 및 익명 함수에 대한 기술적 질문을합니다. 의견 / 맛 또는 토론을 요구하지 않습니다. 익명 함수를 JIT 컴파일 할 수없는 이유를 다른 사람들에게 설명해달라고 요청하고 있습니다. 심지어 당신의 링크조차 "다른 사람들이 나에게 ______를 설명하고 싶다"라고 말하면, 당신은 아마 괜찮을 것입니다 "@gnat
thadeuszlay

4
"왜?"라고 묻기 전에 먼저 "이것이 사실입니까?"라고 물어야합니다. 나는 그 주장에 BS를 호출합니다. 4 개의 주요 브라우저에는 4 개의 서로 다른 JS 엔진이 있으며, 이들 중 어느 것도 참조 나 데이터를 백업하지 않고 익명의 기능을 최적화하지 않는다고 주장합니다.
Sebastian Redl

1
적어도 V8 엔진이 익명 함수를 JIT 컴파일 할 수 있다고 확신합니다. 출처 : 소스 코드의 관련 부분을 읽었습니다. 그리고 이것이 불가능한 기술적 이유는 없습니다. 따라서 질문의 전제는 잘못되었습니다. 이것은 왜 저자 그 진술이 의미가 있다고 생각 하는지에 대한 의문을 제기합니다 . 그러나 우리는 그것을 알 수 없으며 gnat의 링크에서 설명하는 것처럼 토론 할 곳이 아닙니다.
amon

나는 당신의 요점을보고 @SebastianRedl에 동의합니다. 나는이 진술을 이해하지 못했지만 더 깊이 파는 대신 쉬운 길을 가고 여기에서 물었다.
thadeuszlay

답변:


15

함수가 다른 함수 내에 선언 되었기 때문에 외부 함수가 호출 될 때마다 컴파일러가이를 다시 컴파일해야 한다고 생각하는 명명 된 또는 익명의 중첩 함수에 대한 일반적인 오해 가 있습니다. 사실이 아닙니다. 함수의 코드 는 호출 컨텍스트가 다르더라도 일정하며 다른 함수와 마찬가지로 인라인 되거나 최적화 될 수 있습니다 . 이 혼동은 이 질문 에서처럼 해석 / JIT 언어 구현에서 중첩 함수를 주로 사용하는 프로그래머들 사이에서 특히 강력 해 보입니다 .

이 기사에는 그가 생각하는 것뿐만 아니라 문제를 이해하지 못한다는 것을 보여주는 몇 가지 다른 오해가 있습니다. 함수형 프로그래밍에 대한 학습을위한 신뢰할 수있는 출처라고 생각하지 않습니다.


설명해 주셔서 감사합니다. 저는 컴퓨터 과학 (CS) 전문가가 아닙니다. 나는 학위가 없거나 CS를 공부하지도 않았습니다. 그러므로 모든 것을 스스로 연구하는 것은 어렵습니다. 링크 된 기사의 저자가 완전히 정확하지 않은 점을 분명히 설명해 주시겠습니까?
thadeuszlay
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.