Ahead-of-time compilation
ಕಂಪ್ಯೂಟರ್ ವಿಜ್ಞಾನದಲ್ಲಿ, ಮುಂಚಿತವಾಗಿ-ಸಮಯದ ಸಂಕಲನವು (ಎಒಟಿ ಸಂಕಲನ) ಒಂದು ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮೊದಲು (ಸಾಮಾನ್ಯವಾಗಿ) ಉನ್ನತ-ಮಟ್ಟದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯನ್ನು (ಸಾಮಾನ್ಯವಾಗಿ) ಕೆಳ-ಮಟ್ಟದ ಭಾಷೆಗೆ ಸಂಕಲಿಸುವ ಕ್ರಿಯೆಯಾಗಿದೆ, ಸಾಮಾನ್ಯವಾಗಿ ನಿರ್ಮಾಣ-ಸಮಯದಲ್ಲಿ, ರನ್ ಸಮಯದಲ್ಲಿ ನಿರ್ವಹಿಸಲು ಅಗತ್ಯವಾದ ಕೆಲಸದ ಪ್ರಮಾಣವನ್ನು ಕಡಿಮೆ ಮಾಡಲು. ಹೆಚ್ಚಾಗಿ, ಇದು ಸಿ ಅಥವಾ ಸಿ + + ನಂತಹ ಉನ್ನತ ಮಟ್ಟದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯನ್ನು ಅಥವಾ ಜಾವಾ ಬೈಟ್ಕೋಡ್ ಅಥವಾ. ನೆಟ್ ಫ್ರೇಮ್ವರ್ಕ್ ಕಾಮನ್ ಇಂಟರ್ಮೀಡಿಯೇಟ್ ಲ್ಯಾಂಗ್ವೇಜ್ (ಸಿಐಎಲ್) ಕೋಡ್ನಂತಹ ಮಧ್ಯಂತರ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ಸ್ಥಳೀಯ (ಸಿಸ್ಟಮ್-ಅವಲಂಬಿತ) ಯಂತ್ರ ಸಂಕೇತವಾಗಿ ಸಂಕಲಿಸುವ ಕ್ರಿಯೆಯೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದೆ, ಇದರಿಂದಾಗಿ ಪರಿಣಾಮವಾಗಿ ಬೈನರಿ ಫೈಲ್ ಪ್ರಮಾಣಿತ ಸ್ಥಳೀಯ ಕಂಪೈಲರ್ನಂತೆಯೇ ಸ್ಥಳೀಯವಾಗಿ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ. ಈ ನಿರ್ದಿಷ್ಟ ಸನ್ನಿವೇಶದಲ್ಲಿ ಬಳಸುವಾಗ, ಇದನ್ನು ಜಸ್ಟ್-ಇನ್-ಟೈಮ್ (ಜೆಐಟಿ) ಸಂಕಲನಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ ನೋಡಲಾಗುತ್ತದೆ. ಹೆಚ್ಚು ಸಾಮಾನ್ಯವಾಗಿ ಹೇಳುವುದಾದರೆ, ಎಒಟಿ ಸಂಕಲನದ ಉದ್ದೇಶಿತ ಭಾಷೆಗಳು ಸ್ಥಳೀಯ ಯಂತ್ರ ಸಂಕೇತಕ್ಕೆ ನಿರ್ದಿಷ್ಟವಾಗಿರಬೇಕಾಗಿಲ್ಲ ಆದರೆ ಅವುಗಳನ್ನು ಅನಿಯಂತ್ರಿತವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. ಕೆಲವು ಶೈಕ್ಷಣಿಕ ಪತ್ರಿಕೆಗಳು ಈ ಪದವನ್ನು ಜಾವಾ ಬೈಟ್ಕೋಡ್ ಅನ್ನು ಸಿ ಗೆ ಸಂಕಲಿಸುವ ಕ್ರಿಯೆ ಅಥವಾ ಆಪ್ಟಿಮೈಸೇಶನ್ ಪೈಪ್ಲೈನ್ ಅನ್ನು ನಿರ್ವಹಿಸುವ ಸಮಯವನ್ನು ಅರ್ಥೈಸಲು ಬಳಸುತ್ತವೆ. ಒಂದು ಶೈಕ್ಷಣಿಕ ಯೋಜನೆಯು ಈ ಪದವನ್ನು ವಿ8 (ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಎಂಜಿನ್) ಗಾಗಿ ಯಂತ್ರ-ಅವಲಂಬಿತ ಆಪ್ಟಿಮೈಸ್ಡ್ ಐಆರ್ಗೆ ಮತ್ತು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ಕೋರ್ಗಾಗಿ ಯಂತ್ರ ಸ್ವತಂತ್ರ ಬೈಟ್ಕೋಡ್ಗೆ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಪೂರ್ವ-ಸಂಕಲಿಸುವ ಕ್ರಿಯೆಯನ್ನು ಅರ್ಥೈಸಲು ಬಳಸುತ್ತದೆ. ಕೆಲವು ಕೈಗಾರಿಕಾ ಭಾಷೆಯ ಅನುಷ್ಠಾನಗಳು (ಉದಾ. ಕ್ಲೋಜೂರ್ ಮತ್ತು ಹರ್ಮೆಸ್ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಎಂಜಿನ್) ಈ ಪದವನ್ನು ಮೂಲ ಭಾಷೆಯನ್ನು ವಿಎಂ ನಿರ್ದಿಷ್ಟ ಬೈಟ್ಕೋಡ್ಗೆ ಪೂರ್ವ-ಸಂಕಲಿಸುವ ಕ್ರಿಯೆಯನ್ನು ಅರ್ಥೈಸಲು ಬಳಸುತ್ತಾರೆ. ಕೋನೀಯ (ವೆಬ್ ಫ್ರೇಮ್ವರ್ಕ್) ಈ ಪದವನ್ನು ಅದರ ಎಚ್ಟಿಎಮ್ಎಲ್ ಟೆಂಪ್ಲೇಟ್ ಮತ್ತು ಟೈಪ್ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ಗೆ ಪರಿವರ್ತಿಸುವುದನ್ನು ಅರ್ಥೈಸಲು ಬಳಸುತ್ತದೆ. ವಾಸ್ತವವಾಗಿ, ಎಲ್ಲಾ ಸ್ಥಿರ ಸಂಕಲನವನ್ನು ತಾಂತ್ರಿಕವಾಗಿ ಸಮಯಕ್ಕಿಂತ ಮುಂಚಿತವಾಗಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆಯಾದ್ದರಿಂದ, ಅಂತಹ ಪೂರ್ವ-ಸಂಕಲನದ ಕ್ರಿಯೆಯ ಮೇಲೆ ಕೆಲವು ರೀತಿಯ ಕಾರ್ಯಕ್ಷಮತೆಯ ಪ್ರಯೋಜನಗಳನ್ನು ಒತ್ತಿಹೇಳಲು ಈ ನಿರ್ದಿಷ್ಟ ಪದಗಳನ್ನು ಹೆಚ್ಚಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಜಾವಾವನ್ನು ಜಾವಾ ಬೈಟ್ಕೋಡ್ಗೆ ಕಂಪೈಲ್ ಮಾಡುವ ಕ್ರಿಯೆಯನ್ನು ಆದ್ದರಿಂದ ವಿರಳವಾಗಿ ಎಒಟಿ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ ಏಕೆಂದರೆ ಇದು ಸಾಮಾನ್ಯವಾಗಿ ಅಗತ್ಯವಾಗಿರುತ್ತದೆ, ಆಪ್ಟಿಮೈಸೇಶನ್ ಅಲ್ಲ. ಮಧ್ಯಂತರ ಪ್ರಾತಿನಿಧ್ಯಕ್ಕೆ ಸಂಕಲಿಸಬಹುದಾದ ನಿರ್ವಹಿಸಿದ ಕೋಡ್ ರನ್ಟೈಮ್ ಹೊಂದಿರುವ ಕೆಲವು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳು ಜಸ್ಟ್-ಇನ್-ಟೈಮ್ (ಜೆಐಟಿ) ಸಂಕಲನವನ್ನು ಬಳಸುತ್ತವೆ. ಮಧ್ಯಂತರ ಕೋಡ್ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತಿರುವಾಗ ಇದು ಸ್ಥಳೀಯ ರನ್ಗಾಗಿ ಮಧ್ಯಂತರ ಕೋಡ್ ಅನ್ನು ಯಂತ್ರ ಕೋಡ್ ಆಗಿ ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಸಂಕಲಿಸುತ್ತದೆ, ಇದು ಅಪ್ಲಿಕೇಶನ್ನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ನಿಧಾನಗೊಳಿಸಬಹುದು. ಮುಂಚಿತವಾಗಿ ಸಂಕಲಿಸುವುದರಿಂದ ಈ ಹಂತದ ಅಗತ್ಯವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯಕ್ಕಿಂತ ಮೊದಲು ಸಂಭವಿಸುವ ಮೂಲಕ ನಿವಾರಿಸುತ್ತದೆ. ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಟೈಪ್ ಮಾಡಲಾದ ಭಾಷೆಗಳಿಗೆ ಸ್ಥಳೀಯ ಯಂತ್ರ ಕೋಡ್ ಅಥವಾ ಇತರ ಸ್ಥಿರ ವಿಎಂ ಬೈಟ್ಕೋಡ್ಗೆ ಮುಂಚಿತವಾಗಿ ಕಂಪೈಲ್ ಮಾಡುವುದು ಸೀಮಿತ ಸಂಖ್ಯೆಯ ಸಂದರ್ಭಗಳಲ್ಲಿ ಮಾತ್ರ ಸಾಧ್ಯ. ಉದಾಹರಣೆಗೆ, ಎರ್ಲಾಂಗ್ ಭಾಷೆಯ ಹೈ ಪರ್ಫಾರ್ಮೆನ್ಸ್ ಎರ್ಲಾಂಗ್ ಪ್ರಾಜೆಕ್ಟ್ (ಹೈಪಿಇ) ಎಒಟಿ ಕಂಪೈಲರ್ ಸುಧಾರಿತ ಸ್ಥಿರ ಪ್ರಕಾರದ ಪುನರ್ನಿರ್ಮಾಣ ತಂತ್ರಗಳು ಮತ್ತು ಪ್ರಕಾರದ ಊಹಾಪೋಹಗಳಿಂದಾಗಿ ಇದನ್ನು ಮಾಡಬಹುದು. ಸಂಪೂರ್ಣವಾಗಿ ಎಒಟಿ ಸಂಗ್ರಹಿಸಿದ ಪ್ರೋಗ್ರಾಂಗಳು ಮತ್ತು ಗ್ರಂಥಾಲಯಗಳೊಂದಿಗೆ ಹೆಚ್ಚಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ, ರನ್ಟೈಮ್ ಪರಿಸರದ ಭಾಗವನ್ನು ತೆಗೆದುಹಾಕಲು ಸಾಧ್ಯವಿದೆ, ಹೀಗಾಗಿ ಡಿಸ್ಕ್ ಸ್ಥಳ, ಮೆಮೊರಿ, ಬ್ಯಾಟರಿ ಬಾಳಿಕೆ ಮತ್ತು ಆರಂಭಿಕ ಸಮಯವನ್ನು ಉಳಿಸುತ್ತದೆ (ಜೆಐಟಿ ವಾರ್ಮಪ್ ಹಂತವಿಲ್ಲ), ಇತ್ಯಾದಿ. ಈ ಕಾರಣದಿಂದಾಗಿ, ಇದು ಎಂಬೆಡೆಡ್ ಅಥವಾ ಮೊಬೈಲ್ ಸಾಧನಗಳಲ್ಲಿ ಉಪಯುಕ್ತವಾಗಿದೆ. ಪರ್ಫಾರ್ಮೆನ್ಸ್ ಟ್ರೇಡ್-ಆಫ್ಸ್ ಎಒಟಿ ಕಂಪೈಲರ್ಗಳು ಸಂಕೀರ್ಣ ಮತ್ತು ಸುಧಾರಿತ ಕೋಡ್ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳನ್ನು ಮಾಡಬಹುದು, ಇದು ಜೆಐಟಿಂಗ್ನ ಹೆಚ್ಚಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ ತುಂಬಾ ದುಬಾರಿಯೆಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ಇದಕ್ಕೆ ತದ್ವಿರುದ್ಧವಾಗಿ, ಎಒಟಿ ಸಾಮಾನ್ಯವಾಗಿ ಜೆಐಟಿಯಲ್ಲಿ ರನ್ಟೈಮ್ ಪ್ರೊಫೈಲ್-ಗೈಡೆಡ್ ಆಪ್ಟಿಮೈಸೇಶನ್ (ಪಿಜಿಒ), ಸೂಡೋ-ಕಾನ್ಸ್ಟಂಟ್ ಪ್ರೊಪಗೇಷನ್ ಅಥವಾ ಪರೋಕ್ಷ-ವರ್ಚುವಲ್ ಫಂಕ್ಷನ್ ಇನ್ಲೈನಿಂಗ್ನಂತಹ ಕೆಲವು ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಎಒಟಿ ಒಂದು ಗುರಿ ವಿನ್ಯಾಸಕ್ಕೆ ಕಂಪೈಲ್ ಮಾಡಬೇಕು, ಆದರೆ ಜೆಐಟಿಯು ಸಾಫ್ಟ್ವೇರ್ ಬಿಡುಗಡೆಯಾದ ವರ್ಷಗಳ ನಂತರವೂ ಅದು ಚಾಲನೆಯಲ್ಲಿರುವ ನಿಜವಾದ ಸಿಪಿಯುನ ಅತ್ಯುತ್ತಮ ಬಳಕೆಯನ್ನು ಮಾಡಲು ಕೋಡ್ ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡಬಹುದು. ಇದಲ್ಲದೆ, ಜೆಐಟಿ ಕಂಪೈಲರ್ಗಳು ಕೋಡ್ನಲ್ಲಿ ಊಹೆಗಳನ್ನು ಮಾಡುವ ಮೂಲಕ ಹಾಟ್ ಕೋಡ್ ಅನ್ನು ಊಹಾತ್ಮಕವಾಗಿ ಅತ್ಯುತ್ತಮವಾಗಿಸಬಹುದು. ಊಹಾತ್ಮಕ ಊಹೆಯು ನಂತರ ತಪ್ಪಾಗಿದೆ ಎಂದು ಸಾಬೀತಾದರೆ ರಚಿಸಲಾದ ಕೋಡ್ ಅನ್ನು ಡಿಯೋಪ್ಟಿಮೈಸ್ ಮಾಡಬಹುದು. ಹೊಂದಾಣಿಕೆಯ ಆಪ್ಟಿಮೈಸೇಶನ್ ಮೂಲಕ ಕೋಡ್ ಅನ್ನು ಮತ್ತೆ ಆಪ್ಟಿಮೈಸ್ ಮಾಡುವವರೆಗೆ ಅಂತಹ ಕಾರ್ಯಾಚರಣೆಯು ಚಾಲನೆಯಲ್ಲಿರುವ ಸಾಫ್ಟ್ವೇರ್ನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ನಿಧಾನಗೊಳಿಸುತ್ತದೆ. ಎಒಟಿ ಕಂಪೈಲರ್ ಅಂತಹ ಊಹೆಗಳನ್ನು ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ ಮತ್ತು ಕಂಪೈಲ್ ಸಮಯದಲ್ಲಿ ಸಾಧ್ಯವಾದಷ್ಟು ಮಾಹಿತಿಯನ್ನು ಊಹಿಸಬೇಕಾಗುತ್ತದೆ. ಇದು ಕಡಿಮೆ ವಿಶೇಷ ಕೋಡ್ ಅನ್ನು ಆಶ್ರಯಿಸಬೇಕಾಗಿದೆ ಏಕೆಂದರೆ ಯಾವ ವಿಧಗಳು ವಿಧಾನದ ಮೂಲಕ ಹೋಗುತ್ತವೆ ಎಂದು ತಿಳಿದಿಲ್ಲ. ಪ್ರೊಫೈಲ್-ಗೈಡೆಡ್ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳಿಂದ ಅಂತಹ ಸಮಸ್ಯೆಗಳನ್ನು ನಿವಾರಿಸಬಹುದು. ಆದರೆ ಈ ಸಂದರ್ಭದಲ್ಲಿಯೂ ಸಹ, ಜೆಐಟಿ ಕಂಪೈಲರ್ ಮಾಡುವಂತೆ ಬದಲಾಗುತ್ತಿರುವ ರನ್ಟೈಮ್ ಪ್ರೊಫೈಲ್ಗೆ ರಚಿತವಾದ ಕೋಡ್ ಅನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಅಳವಡಿಸಿಕೊಳ್ಳಲಾಗುವುದಿಲ್ಲ. ಶೇಖರಣಾ ವಿನಿಮಯಗಳನ್ನು ಸಹ ನೋಡಿ asm.js ಕಂಪೈಲರ್ (ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್) ಬಾರ್ಟೋಕ್ (CIL) ಎಕ್ಸೆಲ್ಸಿಯರ್ ಜೆಇಟಿ (ಜಾವಾ) ಜಾವಾಗಾಗಿ ಗ್ನೂ ಕಂಪೈಲರ್ ಐಎಲ್2ಸಿಪಿಯು (CIL) ನೇಟಿವ್ ಇಮೇಜ್ ಜನರೇಟರ್ (CIL) ರೂಬಿಮೋಷನ್ (ರೂಬಿ) ಬಾಹ್ಯ ಕೊಂಡಿಗಳ ಉಲ್ಲೇಖಗಳು ವೇಗಃ ಎನ್ಜೆನ್ ನಿಮ್ಮ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಶಕ್ತಿಯುತವಾದ ಹೊಸ ವೈಶಿಷ್ಟ್ಯಗಳೊಂದಿಗೆ ಹೆಚ್ಚಿಸುತ್ತದೆ-ಎಂಎಸ್ಡಿಎನ್ ಮ್ಯಾಗಜೀನ್, ಏಪ್ರಿಲ್ 2005 ಮೊನೊ ಎಒಟಿ ಎಕ್ಸೆಲ್ಸಿಯರ್ ಜೆಇಟಿ-ಜಾವಾ ಎಒಟಿ ಕಂಪೈಲರ್ನೊಂದಿಗೆ ಸರ್ಟಿಫೈಡ್ ಜಾವಾ ಎಸ್ಇ ಇಂಪ್ಲಿಮೆಂಟೇಶನ್ asm.js ರಿಯಲ್-ಟೈಮ್ ಜಾವಾದ ಸಂಕಲನ, ಭಾಗ 2: ಕಂಪೈಲೇಷನ್ ತಂತ್ರಗಳನ್ನು ಹೋಲಿಸುವುದು-ಐಬಿಎಂ ಡೆವಲಪರ್ ವರ್ಕ್ಸ್, ಏಪ್ರಿಲ್ 2007 ಇಂಪ್ರೂವಿಂಗ್ ಸ್ವಿಂಗ್ ಪರ್ಫಾರ್ಮೆನ್ಸ್ಃ ಜೆಐಟಿ ವರ್ಸಸ್ ಎಒಟಿ ಕಂಪೈಲೇಷನ್-ಲಿನಕ್ಸ್