Profile-guided optimization
ಪ್ರೊಫೈಲ್-ಗೈಡೆಡ್ ಆಪ್ಟಿಮೈಸೇಶನ್ (ಪಿಜಿಒ, ಕೆಲವೊಮ್ಮೆ ಪೊಗೊ ಎಂದು ಉಚ್ಚರಿಸಲಾಗುತ್ತದೆ), ಇದನ್ನು ಪ್ರೊಫೈಲ್-ಡೈರೆಕ್ಟೆಡ್ ಫೀಡ್ಬ್ಯಾಕ್ (ಪಿಡಿಎಫ್) ಎಂದೂ ಕರೆಯಲಾಗುತ್ತದೆ, ಮತ್ತು ಫೀಡ್ಬ್ಯಾಕ್-ಡೈರೆಕ್ಟೆಡ್ ಆಪ್ಟಿಮೈಸೇಶನ್ (ಎಫ್ಡಿಒ) ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ನಲ್ಲಿ ಕಂಪೈಲರ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ತಂತ್ರವಾಗಿದ್ದು, ಪ್ರೋಗ್ರಾಂ ರನ್ಟೈಮ್ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು ಪ್ರೊಫೈಲಿಂಗ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ಸೋರ್ಸ್ ಕೋಡ್ನ ಸ್ಥಿರ ಪ್ರೋಗ್ರಾಂ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಆಧರಿಸಿದ ವಿಧಾನ ಆಪ್ಟಿಮೈಸೇಶನ್ ತಂತ್ರಗಳು ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ನಿಜವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸದೆ ಕೋಡ್ ಕಾರ್ಯಕ್ಷಮತೆಯ ಸುಧಾರಣೆಗಳನ್ನು ಪರಿಗಣಿಸುತ್ತವೆ. ಯಾವುದೇ ಡೈನಾಮಿಕ್ ಪ್ರೋಗ್ರಾಂ ವಿಶ್ಲೇಷಣೆಯನ್ನು ನಡೆಸಲಾಗುವುದಿಲ್ಲ. ವಿಶ್ಲೇಷಣೆಯು ಲೂಪ್ ಅನ್ನು ಎಷ್ಟು ಬಾರಿ ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಒಳಗೊಂಡಂತೆ ಲೂಪ್ಗಳೊಳಗಿನ ಕೋಡ್ ಅನ್ನು ಸಹ ಪರಿಗಣಿಸಬಹುದು, ಉದಾಹರಣೆಗೆ ಲೂಪ್ ಅನ್ರೋಲಿಂಗ್. ಎಲ್ಲಾ ರನ್ ಟೈಮ್ ಮಾಹಿತಿಯ ಅನುಪಸ್ಥಿತಿಯಲ್ಲಿ, ಆ ಕೋಡ್ ವಿಭಾಗವನ್ನು ನಿಜವಾಗಿ ಎಷ್ಟು ಬಾರಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ಸ್ಥಿರ ಪ್ರೋಗ್ರಾಂ ವಿಶ್ಲೇಷಣೆಯು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ. 1957 ರಲ್ಲಿ ಫೋರ್ಟ್ರಾನ್ ಆಟೋಮ್ಯಾಟಿಕ್ ಕೋಡಿಂಗ್ ಸಿಸ್ಟಮ್ ಎಂದು ಪರಿಚಯಿಸಲಾದ ಮೊದಲ ಉನ್ನತ ಮಟ್ಟದ ಕಂಪೈಲರ್, ಕೋಡ್ ಅನ್ನು ಬ್ಲಾಕ್ಗಳಾಗಿ ವಿಭಜಿಸಿತು ಮತ್ತು ಮಾಂಟೆ ಕಾರ್ಲೊ ಶೈಲಿಯಲ್ಲಿ ಕೋಡ್ನ ಸಿಮ್ಯುಲೇಟೆಡ್ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯ ಮೂಲಕ ಪ್ರತಿ ಬ್ಲಾಕ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಆವರ್ತನದ ಕೋಷ್ಟಕವನ್ನು ರೂಪಿಸಿತು, ಇದರಲ್ಲಿ ಷರತ್ತುಬದ್ಧ ವರ್ಗಾವಣೆಯ ಫಲಿತಾಂಶವನ್ನು (ಐಎಫ್-ರೀತಿಯ ಹೇಳಿಕೆಗಳ ಮೂಲಕ) ಯಾದೃಚ್ಛಿಕ ಸಂಖ್ಯೆ ಜನರೇಟರ್ನಿಂದ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ. ಪ್ರೋಗ್ರಾಮರ್-ಸರಬರಾಜು ಮಾಡಿದ ಆವರ್ತನ ಮಾಹಿತಿಯ ಬದಲು, ಪ್ರೊಫೈಲ್-ಗೈಡೆಡ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅಂತಿಮ ರಚಿತ ಕೋಡ್ ಅನ್ನು ಅತ್ಯುತ್ತಮವಾಗಿಸಲು ಇನ್ಸ್ಟ್ರುಮೆಂಟೆಡ್ ಪ್ರೋಗ್ರಾಂನ ಪ್ರೊಫೈಲಿಂಗ್ ಟೆಸ್ಟ್ ರನ್ಗಳ ಫಲಿತಾಂಶಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಕಂಪೈಲರ್ ಪ್ರೊಗ್ರಾಮ್ನ ಮಾದರಿ ರನ್ನಿಂದ ಪ್ರೊಫೈಲ್ ಡೇಟಾವನ್ನು ಪ್ರತಿನಿಧಿ ಇನ್ಪುಟ್ ಸೆಟ್ನಲ್ಲಿ ಪ್ರವೇಶಿಸುತ್ತದೆ. ಕಾರ್ಯಕ್ರಮದ ಯಾವ ಪ್ರದೇಶಗಳನ್ನು ಹೆಚ್ಚು ಬಾರಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಯಾವ ಪ್ರದೇಶಗಳನ್ನು ಕಡಿಮೆ ಬಾರಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ಫಲಿತಾಂಶಗಳು ಸೂಚಿಸುತ್ತವೆ. ಎಲ್ಲಾ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳು ಪ್ರೊಫೈಲ್-ಮಾರ್ಗದರ್ಶಿ ಪ್ರತಿಕ್ರಿಯೆಯಿಂದ ಪ್ರಯೋಜನ ಪಡೆಯುತ್ತವೆ ಏಕೆಂದರೆ ಅವು ಸಂಕಲನ ನಿರ್ಧಾರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುವಾಗ ಹ್ಯೂರಿಸ್ಟಿಕ್ಸ್ ಮೇಲೆ ಕಡಿಮೆ ಅವಲಂಬಿತವಾಗಿರುತ್ತವೆ. ಆದಾಗ್ಯೂ, ಪ್ರೊಫೈಲಿಂಗ್ ಹಂತದಲ್ಲಿ ಪ್ರೋಗ್ರಾಂಗೆ ನೀಡಲಾದ ದತ್ತಾಂಶದ ಮಾದರಿಯು ವಿಶಿಷ್ಟ ಬಳಕೆಯ ಸನ್ನಿವೇಶಗಳ ಸಂಖ್ಯಾಶಾಸ್ತ್ರೀಯ ಪ್ರತಿನಿಧಿಯಾಗಿರಬೇಕು; ಇಲ್ಲದಿದ್ದರೆ, ಪ್ರೊಫೈಲ್-ಮಾರ್ಗದರ್ಶಿ ಪ್ರತಿಕ್ರಿಯೆಯು ಅದನ್ನು ಸುಧಾರಿಸುವ ಬದಲು ಅಂತಿಮ ನಿರ್ಮಾಣದ ಒಟ್ಟಾರೆ ಕಾರ್ಯಕ್ಷಮತೆಗೆ ಹಾನಿಯುಂಟುಮಾಡುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಜಸ್ಟ್-ಇನ್-ಟೈಮ್ ಸಂಕಲನವು ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿ ಸ್ಥಳೀಯ ಕೋಡ್ ಅನ್ನು ಉತ್ಪಾದಿಸಲು ಕಾರ್ಯಗತಗೊಳಿಸಿದ ಕೋಡ್ನ ಭಾಗಗಳನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಮರುಸಂಕಲಿಸಲು ರನ್ಟೈಮ್ ಮಾಹಿತಿಯನ್ನು ಬಳಸಿಕೊಳ್ಳಬಹುದು. ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯದಲ್ಲಿ ಡೈನಾಮಿಕ್ ಪ್ರೊಫೈಲ್ ಬದಲಾದರೆ, ಅದು ಹಿಂದಿನ ಸ್ಥಳೀಯ ಕೋಡ್ ಅನ್ನು ಡಿಯೋಪ್ಟಿಮೈಸ್ ಮಾಡಬಹುದು ಮತ್ತು ಹೊಸ ಪ್ರೊಫೈಲ್ನಿಂದ ಮಾಹಿತಿಯೊಂದಿಗೆ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿದ ಹೊಸ ಕೋಡ್ ಅನ್ನು ರಚಿಸಬಹುದು. ಪಿ. ಜಿ. ಓ. ಅನ್ನು ಬಳಸಿಕೊಂಡು ಫೈರ್ಫಾಕ್ಸ್ ಅನ್ನು ನಿರ್ಮಿಸಲು ಬೆಂಬಲವಿದೆ. ಪಿಜಿಒ ಪರಿಣಾಮಕಾರಿಯಾಗಿದ್ದರೂ, ಅದರ ಬೇಸರದ ದ್ವಿ-ಸಂಕಲನ ಮಾದರಿಯ ಕಾರಣದಿಂದಾಗಿ ಇದನ್ನು ಸಾಫ್ಟ್ವೇರ್ ಯೋಜನೆಗಳು ವ್ಯಾಪಕವಾಗಿ ಅಳವಡಿಸಿಕೊಂಡಿಲ್ಲ. ಹಾರ್ಡ್ವೇರ್ ಪರ್ಫಾರ್ಮೆನ್ಸ್ ಕೌಂಟರ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಪ್ರೊಫೈಲ್ ಅನ್ನು ಸಂಗ್ರಹಿಸುವ ಮೂಲಕ ಉಪಕರಣಗಳಿಲ್ಲದೆ ಪಿಜಿಒ ಅನ್ನು ನಿರ್ವಹಿಸಲು ಸಹ ಸಾಧ್ಯವಿದೆ. ಈ ಮಾದರಿ-ಆಧಾರಿತ ವಿಧಾನವು ತುಂಬಾ ಕಡಿಮೆ ಓವರ್ಹೆಡ್ ಅನ್ನು ಹೊಂದಿದೆ ಮತ್ತು ವಿಶೇಷ ಸಂಕಲನದ ಅಗತ್ಯವಿರುವುದಿಲ್ಲ. ಹಾಟ್ಸ್ಪಾಟ್ ಜಾವಾ ವರ್ಚುವಲ್ ಯಂತ್ರವು (ಜೆವಿಎಂ) ಸ್ಥಳೀಯ ಕೋಡ್ ಅನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಉತ್ಪಾದಿಸಲು ಪ್ರೊಫೈಲ್-ಗೈಡೆಡ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ಇದರ ಪರಿಣಾಮವಾಗಿ, ಸಾಫ್ಟ್ವೇರ್ ಬೈನರಿಯನ್ನು ಅದು ಸ್ವೀಕರಿಸುತ್ತಿರುವ ನಿಜವಾದ ಹೊರೆಗೆ ಹೊಂದುವಂತೆ ಮಾಡಲಾಗುತ್ತದೆ. ಲೋಡ್ ಬದಲಾದರೆ, ಹೊಂದಾಣಿಕೆಯ ಆಪ್ಟಿಮೈಸೇಶನ್ ಚಾಲನೆಯಲ್ಲಿರುವ ಸಾಫ್ಟ್ವೇರ್ ಅನ್ನು ಹೊಸ ಲೋಡ್ಗೆ ಅತ್ಯುತ್ತಮವಾಗಿಸಲು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಮರುಸಂಕಲನೆ ಮಾಡಬಹುದು. ಇದರರ್ಥ ಹಾಟ್ಸ್ಪಾಟ್ ಜೆವಿಎಂನಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾದ ಎಲ್ಲಾ ಸಾಫ್ಟ್ವೇರ್ಗಳು ಪ್ರೊಫೈಲ್-ಗೈಡೆಡ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ಅನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಬಳಸುತ್ತವೆ. ಗೂಗಲ್ ಕ್ರೋಮ್ನ ಮೈಕ್ರೋಸಾಫ್ಟ್ ವಿಂಡೋಸ್ ಆವೃತ್ತಿಯಲ್ಲಿ ಪಿಜಿಒ ಅನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳಲಾಗಿದೆ. ಕ್ರೋಮ್ ನ 64-ಬಿಟ್ ಆವೃತ್ತಿಯಲ್ಲಿ ಪಿಜಿಒ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ, ಇದು ಆವೃತ್ತಿ 53 ರಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ ಮತ್ತು 32-ಬಿಟ್ ಆವೃತ್ತಿಗೆ ಆವೃತ್ತಿ 54 ಆಗಿದೆ. 10 ಪ್ರತಿಶತದಷ್ಟು ಕಾರ್ಯಕ್ಷಮತೆಯ ಸುಧಾರಣೆಗೆ ಕಾರಣವಾಗುವ ನಿರ್ಮಾಣಗಳಿಗೆ ಮಾರ್ಗದರ್ಶನ ನೀಡಲು ಉತ್ಪಾದನಾ ಪ್ರೊಫೈಲ್ಗಳನ್ನು ಬಳಸಲು ಬಳಸಲಾಗುವ ವ್ಯವಸ್ಥೆಯನ್ನು (ಆಟೋಎಫ್ಡಿಒ) ವಿವರಿಸುವ ಕಾಗದವನ್ನು ಗೂಗಲ್ ಪ್ರಕಟಿಸಿದೆ. ಅನುಷ್ಠಾನಗಳು ಪಿ. ಜಿ. ಓ. ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಕಂಪೈಲರ್ಗಳ ಉದಾಹರಣೆಗಳೆಂದರೆಃ ಇಂಟೆಲ್ ಸಿ + + ಕಂಪೈಲರ್ ಮತ್ತು ಫೋರ್ಟ್ರಾನ್ ಕಂಪೈಲರ್ಗಳು ಜಿ. ಎನ್. ಯು ಕಂಪೈಲರ್ ಕಲೆಕ್ಷನ್ ಕಂಪೈಲರ್ಗಳು ಒರಾಕಲ್ ಸೋಲಾರಿಸ್ ಸ್ಟುಡಿಯೋ (ಹಿಂದೆ ಸನ್ ಸ್ಟುಡಿಯೋ ಎಂದು ಕರೆಯಲಾಗುತ್ತಿತ್ತು) ಮೈಕ್ರೋಸಾಫ್ಟ್ ವಿಷುಯಲ್ ಸಿ + + ಕಂಪೈಲರ್ ಕ್ಲಾಂಗ್ ಐಬಿಎಂ ಎಕ್ಸ್ಎಲ್ ಸಿ/ಸಿ + + ಗ್ರಾಲ್ವಿಎಂ ಎಂಟರ್ಪ್ರೈಸ್ ಎಡಿಷನ್. ನೆಟ್ ಜೆಐಟಿ ಕಂಪೈಲರ್ ಗೋ ಸಹ ನೋಡಿ ಅಡಾಪ್ಟಿವ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ಡೈನಾಮಿಕ್ ಡೆಡ್ ಕೋಡ್ ಎಲಿಮಿನೇಷನ್ ಗ್ಲೋಬಲ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ಹಾಟ್ ಸ್ಪಾಟ್ (ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್) ಇಂಟರ್ಪ್ರೋಸೆಡ್ಯೂರಲ್ ಆಪ್ಟಿಮೈಸೇಶನ್ ಲಿಂಕ್-ಟೈಮ್ ಆಪ್ಟಿಮೈಸೇಶನ್ (ಎಲ್ಟಿಒ) ಟ್ರ್ಯಾಸಿಂಗ್ ಜಸ್ಟ್-ಇನ್-ಟೈಮ್ ಕಂಪೈಲೇಷನ್ ರೆಫರೆನ್ಸ್ ಕಂಪೈಲರ್ ಆಪ್ಟಿಮೈಸೇಶನ್