Bloatware 콘테스트 : 100 개 이상의 MiB 실행 파일 제작 [닫기]


22

104857600 바이트 이상의 큰 실행 파일로 컴파일하는 즐겨 사용하는 컴파일 된 언어로 짧은 소스 코드를 작성하십시오. 이 프로그램은 실행 가능해야하고 (1GB의 사용 가능한 메모리가 있다고 가정) 무엇이든 할 수 있습니다 (예 : 안녕하세요 세상과 같은 간단한 것).

명확하지 않은 트릭을 사용하는 것이 좋습니다.

C의 지루한 예 :

int a[1024*1024*25] = { 1 };

int main(){}

실행 파일의 크기를 줄일 수없는 이유를 "설명"할 수있는 경우 보너스 포인트 (예 : 모든 부풀림이 실제로 어떻게 든 사용됨).


7
모든 라이브러리를 정적으로 연결 하십시오!
marinus

그렇기 때문에 처음에는 10+ MiB에 대해 생각했지만 100+로 개정되었습니다. 아니면 시스템의 모든 라이브러리를 의미합니까?
Vi.

HTML 파일을 실행 파일로 간주 할 수 있습니까?
xem

󠀠󠀠󠀠
Vi.

이기는 기준이 "가장 큰 출력 파일"또는 다른 것으로 변경되면 주제에 남아있을 수 있지만, 현재 답변을 무효화하고 적어도 하나의 다른 도전과 중복됩니다. 인기 콘테스트 태그 상태
cat

답변:


13

좋아, C에 또 하나 있는데, 모호하게 정의 된 보너스 포인트가 있습니다.

#define a(x) x,x|1,x|2,x|3,x|4,x|5,x|6,x|7
#define b(x) a(x),a(x|8),a(x|16),a(x|24)
#define c(x) b(x),b(x|32),b(x|64),b(x|96)
#define d(x) c(x),c(x|128),c(x|256),c(x|384)
#define e(x) d(x),d(x|512),d(x|4<<8),d(x|6<<8)
#define f(x) e(x),e(x|2048),e(x|4096),e(x|6144)
#define g(x) f(x),f(x|8192),f(x|4<<12),f(x|6<<12)
#define h(x) g(x),g(x|2<<14),g(x|4<<14),g(x|6<<14)
#define i(x) h(x),h(x|2<<16),h(x|4<<16),h(x|6<<16)
#define j(x) i(x),i(x|2<<18),i(x|4<<18),i(x|6<<18)
#define k(x) j(x),j(x|2<<20),j(x|4<<20),j(x|6<<20)
int u,v,z[]={k(0),k(2<<22),k(4<<22),k(6<<22)}
int main(){for(u=v=0;u<1<<25;u++)v|=u!=z[u];return v;}

기본적으로 컴파일 타임에 0에서 2 25 − 1 사이의 정수로 오름차순 시퀀스를 빌드합니다 . 런타임시, 시퀀스에 실제로 예상 값이 포함되어 있는지 확인하고, 그렇지 않은 경우 0이 아닌 오류 코드를 리턴합니다.

추신. 수학을 제대로했다면 실행 파일은 100MiB 이상이어야합니다. 컴파일이 완료되면 정확한 크기를 알려 드리겠습니다.


1
추신. 실제 크기를 확인하려는 시도는 다소 비정상적인 GCC 오류 메시지로 의심되는 것으로 인해 일시적으로 방해를 받았습니다 virtual memory exhausted: Cannot allocate memory. o_O 어떻게 든 컴파일 할 수 있는지 확인하기 위해 옵션을 조정하려고합니다.
Ilmari Karonen


clang(ICE) 및로 만들 수도 없습니다 tcc.
Vi.

1
-O0컴파일러의 요구를 최소화하기 위해 모든 최적화 ( )를 끄고 파이프 ( -pipe)를 활성화 하면 도움이되거나 도움이되지 않을 수 있습니다.
dmckee

3
이 컴파일 문제는 프로그램이 올바른지 확인하기 위해 자체 전처리기를 작성하는 IOCCC의 우승작을 상기시킵니다. ioccc.org/2004/vik2.hint
Christian Semrau

6

기음#

소스 코드가 30k를 넘었 기 때문에 이것이 짧은 것으로 판단되는지 확실하지 않습니다. :)

즉, 인용하기에는 너무 큽니다. 여기 약간 단축 된 버전이 있습니다.

using System.Collections.Generic;
class Program
{
    static void Main()
    {
        var a = new List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<List<int>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>();
    }
}

내가 실제로 컴파일 한 코드는 여기에서 찾을 수 있습니다 : http://pastebin.com/R5T3e3J0

최적화없이 컴파일하면 ~ 45KiB의 .EXE 파일이 생성됩니다. Ngen.exe (Native Image Generator)로 다시 컴파일하면 무려 104MiB가됩니다!

CLR 제네릭 형식 시스템의 작동 방식으로 인해 작동합니다. 위의 코드에서 각각의 List <>는 새로운 유형 선언을 생성합니다 (일반적으로 JIT 컴파일을 통해 Ngen이 AOT 컴파일을 수행함). 따라서 List <int>의 한 유형, List <List <int>>의 유형 등이 있습니다. 따라서이 코드의 경우 총 5160 개의 서로 다른 일반 목록이 만들어집니다.


1
필요한 것은 프로그램을 작성하는 스크립트입니다.
초에 hildred

목록의 중첩 수준을 제거하여 프로그램의 크기를 줄이는 것이 다소 간단합니다. 프로그램 기능에 영향을주지 않고 반복 코드를 쉽게 제거 할 수 없도록 만들 수 있습니까?
Vi.

물론 중첩을 제거 할 수는 있지만 C 예제에서는 #defines을 몇 개 제거하고 프로그램을 더 작게 만들 수 있습니다. 크기를 줄일 수 없다는 요구 사항을 해석 한 방법은 최적화 할 수 없다는 것입니다. 소스 코드를 수정할 수 있다면 요점을 알 수 없습니다. :)
Christian Palmstierna

1
변수 a는 절대로 사용되지 않기 때문에 아마도 최적화 될 수 있습니다.
Christian Palmstierna

4

코볼

   ID DIVISION. 
   PROGRAM-ID. BLOAT. 
   ENVIRONMENT DIVISION. 
   DATA DIVISION. 
   WORKING-STORAGE SECTION. 
   01  THE-TEST-STRINGS. 
       05  FILLER OCCURS 11584 TIMES. 
           10  TEST-STRING          PIC X(11584). 
   LOCAL-STORAGE SECTION. 
   01  FIRST-TIME-FLAG              PIC X VALUE "Y". 
   01  DISP-BEFORE-STRING     COMP  PIC 9(8). 
   01  LOOP-COUNTER           COMP  PIC 9(8). 
   01  START-STRING. 
       05  FILLER OCCURS 0 TO 11584 TIMES 
           DEPENDING ON DISP-BEFORE-STRING. 
           10  FILLER               PIC X. 
       05  THE-SUBSTRING            PIC X(12). 
   01  INITIAL-STRING               PIC X(12) 
                                     VALUE "HELLO WORLD!".
   LINKAGE SECTION. 
   01  STRING-PARAMETER             PIC X(11584). 
   01  THE-RESULT                   PIC X. 
   PROCEDURE DIVISION USING 
                                    STRING-PARAMETER 
                                    THE-RESULT 
                                    . 

       IF FIRST-TIME-FLAG = "Y" 
           PERFORM                  SET-UP-STRINGS 
       END-IF 
       PERFORM 
         VARYING                    LOOP-COUNTER 
         FROM                       1 
           BY                       1 
         UNTIL                      LOOP-COUNTER 
           GREATER THAN 11584 
         OR STRING-PARAMETER 
             EQUAL TO               TEST-STRING 
                                        ( LOOP-COUNTER ) 
       END-PERFORM 
       IF STRING-PARAMETER 
         EQUAL TO TEST-STRING ( LOOP-COUNTER ) 
           MOVE "Y"                TO THE-RESULT 
       ELSE 
           MOVE "N"                TO THE-RESULT 
       END-IF 
       GOBACK 
       . 
   SET-UP-STRINGS. 
       PERFORM 
         VARYING                    LOOP-COUNTER 
         FROM                       0 
           BY                       1 
         UNTIL                      LOOP-COUNTER 
           EQUAL TO 11584 
           MOVE 11584               TO DISP-BEFORE-STRING 
           MOVE SPACE               TO START-STRING 
           MOVE LOOP-COUNTER        TO DISP-BEFORE-STRING 
           MOVE INITIAL-STRING      TO THE-SUBSTRING 
           MOVE START-STRING        TO TEST-STRING 
                                        ( LOOP-COUNTER + 1 )
       END-PERFORM 
       MOVE "N"                     TO FIRST-TIME-FLAG 
       . 

약간의 지식은 위험한 것일 수 있습니다.

많은 작은 비교보다 하나의 큰 비교를 수행하는 것이 더 빠를 수 있습니다. IBM의 Enterprise COBOL (최대 버전 4.2)은 최대 WORKING-STORAGE가 128MB (버전 5.0은 2GB를 가질 수 있음)를 가질 수 있습니다. LOCAL-STORAGE는 더 많은 공간이 필요한 경우 추가 128MB를 제공합니다.

이 작업은 11584 바이트 저장 장치의 값이 "HELLO WORLD!"인지 확인하는 것입니다. 어딘가에 있고 나머지는 공간입니다.

가상의 프로그래머는이를 위해 서브 프로그램을 작성하고 (다른 곳에 필요할 경우를 대비하여) 고성능 기술 (보너스)을 포함하기로 결정합니다.

프로그래머는 11584 * 11584가 128MB라고 계산하므로 큰 테이블에는 WORKING-STORAGE를 사용하고 필요한 다른 모든 테이블에는 LOCAL-STORAGE를 사용합니다.

프로그래머는 코드를 작성하고 컴파일이 깨끗할 때 자신에게 미소를 짓습니다. 그들은 128MB 정도 옳았습니다.

코드를 테스트합니다. 작동합니다. 아마도 조금 느리지 만 기계에 많은 부하가 있습니다. 전문가의 지식 수준없이 코딩하면 속도가 느려질 것이라고 생각하면서 다시 웃습니다.

WORKING-STORAGE는 134,189,056 바이트로 제공되며 다른 몇 바이트도 있습니다. 충분히 커야합니다.

현실은 여기에 구현 된 짧은 비교 대신 긴 비교를 수행하는 것이 매우 느린 방법이라는 것입니다.

하위 프로그램을 호출 할 때마다 런타임 루틴에 의해 초기화되는 LOCAL-STORAGE는 더 느리지 만 각 호출에 대해 전체 128MB가 설정됩니다.

프로그래머는 테이블 크기에 대해 잘못 알고 있었으므로 LOCAL-STORAGE를 사용하지 않고 충분한 공간이 있습니다. 긴 비교는 짧은 비교를 이길 수 있지만 실제 비교 수가 줄어들 때만 가능합니다.

LOCAL-STORAGE와 WORKING-STORAGE를 바꾸는 것을 고려했지만 누군가가 그렇게 코딩 할 가능성이 훨씬 적으므로 그렇게하지 않았습니다. LOCAL-STORAGE에있는 경우 테이블에 VALUE SPACE를 설정하면 각 CALL 에서 테이블이 두 번 시작 되어 속도가 느려집니다.

프로그램을 다시 작성하지 않고는 블로 트를 제거 할 수 없습니다. 유용한 기술이 하나 있지만 대부분의 코드는 나쁩니다.

이것은 실제 예는 아니지만 누군가가 영리하다면 누군가가 그것을 상상할 수 있습니다 :-)

컴파일은 전혀 문제가되지 않습니다. 모든 가능성으로 그것을 실행하는 것은 시도 할 가치가없는 것으로 판명되었습니다.

물론 오래된 버그도 있습니다. "검색"작업에서 매우 일반적인 것입니다.



0

스칼라

import scala.{specialized=>s}
import scala.Specializable.{Everything=>E}
class Printer[@s(E) A, @s(E) B, @s(E) C, @s(E) D, @s(E) E, @s(E) F, @s(E) G, @s(E) H]{
    def print(a:A,b:B,c:C)=println(s"$a, $b, $c")
}

object Main extends App{ 
    (new Printer[Int,Int,Int,Int,Int,Int,Int,Int]).print(1,2,3)
}

특수 주석은 유형이 모두 객체로 바뀔 때 복싱을 방지하기 위해 각 유형에 대해 새 클래스를 만듭니다. Everything먼저 충돌하지 않으면 10 ^ 8 (( 10 개의 유형으로 구성됨) ^ (클래스의 8 가지 유형 매개 변수)) 각 300-500 바이트의 클래스 파일이 생성됩니다.


이것은 특히 클래스가 실제로 인쇄 방법보다 더 많은 것을 수행 한 경우 성능이 중요하다고 말함으로써 설명 할 수 있습니다. 선언에 모두 넣는 대신 일반적인 특수 메소드를 사용하면 알아 채기가 더 어려워집니다


이것을 만들려면 어떤 스칼라 버전이 필요합니까? 2.9.2 + dfsg-1은 "무엇이든"을 좋아하지 않으며 스칼라에 대해 모른다.
Vi.

Scala 2.10에는 s ""로 보간 된 문자열이 포함되어 있지만 크기에 영향을주지 않고 해당 문자열을 제거 할 수 있습니다. Scala 2.8에는 전문화 기능이 있으므로 보간 된 문자열을 제거하면 모든 것이 제대로 작동합니다.
user60561

-2

자바 스크립트

function bigenough(){
        var kbytes = $('html').html().length;
        return (kbytes>1024*100);
}
while(!bigenough()){
$('html').append('<p>WASSUP</p>');}

이 페이지의 브라우저 콘솔에서이 코드를 실행하고 완료되면 페이지를 저장하십시오. 파일 크기가 100MB보다 커야합니다. 여전히 테스트 중입니다. 한 번 실제 크기를 게시합니다.

업데이트-
저장된 페이지는 결과 실행 파일입니다. 크롬의 v8 엔진은 컴파일러입니다. 그리고 내가 게시 한 코드는 프로그램입니다. 나는 컴파일하는 데 오랜 시간이 걸린다는 것을 인정한다. :디


1
필요에 따라 작동하지 않습니다. 작업은 실행시 너무 많은 메모리를 소비하는 파일이 아니라 너무 큰 실행 파일을 작성하는 것입니다. 또한 jQuery를 과도하게 사용합니다.
John Dvorak

@ JanDvorak는 100MB보다 큰 크기의 HTML 파일을 만듭니다. 또한 질문은 JQuery 사용 제한을 지정하지 않습니다. 프로그램이 여전히 내 Chrome에서 실행 중이며 Chrome 작업 관리자가보고 한대로 페이지에서 300MB의 메모리가 소비되고 있습니다.
rahulroy9202

그렇지 않습니다. 모든 추가 작업은 순전히 메모리에서 이루어집니다. 사용자가 저장 조작을 트리거하는 경우에만 100MB HTML 파일을 작성합니다. 그는 할 수 없거나 원하지 않을 수도 있습니다. 또한, 당신은 "컴파일"를 추가의 과정을 호출 할 경우에도 그리고 당신이 파일로 생성 된 HTML을 저장, 관리, 나는 당신이 당신의 자신의 컴파일러를 쓸 수 있다고 생각하지 않습니다.
John Dvorak

@ JanDvorak 나는 페이지를 저장해야한다는 대답에서 지적했다. 여기서 페이지는 결과 실행 파일입니다. 크롬의 v8 엔진은 컴파일러입니다. 그리고 내가 게시 한 코드는 프로그램입니다.
rahulroy9202 2019

2
V8은 작은 "실행 가능"(하드 드라이브로 절대 가져 오지 않음)을 만들어서 실행 다음 컴파일되지 않은 언어로 거대한 "소스 파일"을 생성하는 컴파일러입니다. 프로그래밍 언어). 경우에 당신은 당신의 스크립트 실행 (아니 ...) 그때 우리는 호출해야합니다의 통화 결과 스크립트 컴파일러,하지 V8을. 스크립트가 프로세스에서 실행되면 컴파일이라고하지 않습니다 (매크로는 그 라인을 흐리게 처리하지만 매크로는 아닙니다)
John Dvorak
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.