ಫೇಸ್‌ಬುಕ್ ಓಪನ್ ಸೋರ್ಸ್ ಸಿಂಡರ್, ಇನ್‌ಸ್ಟಾಗ್ರಾಮ್ ಬಳಸುವ ಸಿಪಿಥಾನ್‌ನ ಫೋರ್ಕ್

ಪೈಥಾನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಮುಖ್ಯ ಉಲ್ಲೇಖ ಅನುಷ್ಠಾನವಾದ ಸಿಪಿಥಾನ್ 3.8.5 ನ ಫೋರ್ಕ್ ಪ್ರಾಜೆಕ್ಟ್ ಸಿಂಡರ್‌ಗಾಗಿ ಫೇಸ್‌ಬುಕ್ ಮೂಲ ಕೋಡ್ ಅನ್ನು ಪ್ರಕಟಿಸಿದೆ. ಇನ್‌ಸ್ಟಾಗ್ರಾಮ್‌ಗೆ ಶಕ್ತಿ ತುಂಬಲು ಫೇಸ್‌ಬುಕ್‌ನ ಉತ್ಪಾದನಾ ಮೂಲಸೌಕರ್ಯದಲ್ಲಿ ಸಿಂಡರ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಲು ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.

ಸಿದ್ಧಪಡಿಸಿದ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳನ್ನು ಮುಖ್ಯ ಸಿಪಿಥಾನ್ ಫ್ರೇಮ್‌ವರ್ಕ್‌ಗೆ ಪೋರ್ಟ್ ಮಾಡುವ ಸಾಧ್ಯತೆಯನ್ನು ಚರ್ಚಿಸಲು ಮತ್ತು ಸಿಪಿಥಾನ್ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸುವಲ್ಲಿ ಒಳಗೊಂಡಿರುವ ಇತರ ಯೋಜನೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡಲು ಕೋಡ್ ಅನ್ನು ಪ್ರಕಟಿಸಲಾಗಿದೆ. ಫೇಸ್‌ಬುಕ್ ಸಿಂಡರ್ ಅನ್ನು ಪ್ರತ್ಯೇಕ ಓಪನ್ ಸೋರ್ಸ್ ಯೋಜನೆಯ ರೂಪದಲ್ಲಿ ಬೆಂಬಲಿಸಲು ಉದ್ದೇಶಿಸಿಲ್ಲ ಮತ್ತು ಕೋಡ್ ಅನ್ನು ಕಂಪನಿಯ ಮೂಲಸೌಕರ್ಯದಲ್ಲಿ ಬಳಸಲಾಗುವ ರೂಪದಲ್ಲಿ ಪ್ರಸ್ತುತಪಡಿಸಲಾಗುತ್ತದೆ, ಹೆಚ್ಚುವರಿ ಬಾಚಣಿಗೆ ಮತ್ತು ದಾಖಲಾತಿಗಳಿಲ್ಲದೆ. ಅವರು CPython ಗೆ ಪರ್ಯಾಯವಾಗಿ ಸಿಂಡರ್ ಅನ್ನು ಪ್ರಚಾರ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುವುದಿಲ್ಲ - ಅಭಿವೃದ್ಧಿಯ ಮುಖ್ಯ ಗುರಿಯು CPython ಅನ್ನು ಸುಧಾರಿಸುವ ಬಯಕೆಯಾಗಿದೆ.

ಸಿಂಡರ್ ಕೋಡ್ ಅನ್ನು ಸಾಕಷ್ಟು ವಿಶ್ವಾಸಾರ್ಹವೆಂದು ಗುರುತಿಸಲಾಗಿದೆ ಮತ್ತು ಉತ್ಪಾದನಾ ಪರಿಸರದಲ್ಲಿ ಪರೀಕ್ಷಿಸಲಾಗಿದೆ, ಆದರೆ ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸಿದರೆ, ನೀವು ಅವುಗಳನ್ನು ನೀವೇ ಪರಿಹರಿಸಬೇಕಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ಅದು ಬಾಹ್ಯ ದೋಷ ಸಂದೇಶಗಳಿಗೆ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತದೆ ಮತ್ತು ವಿನಂತಿಗಳನ್ನು ಎಳೆಯುತ್ತದೆ ಎಂದು ಫೇಸ್‌ಬುಕ್ ಖಾತರಿಪಡಿಸುವುದಿಲ್ಲ. ಅದೇ ಸಮಯದಲ್ಲಿ, ಫೇಸ್‌ಬುಕ್ ಸಮುದಾಯದೊಂದಿಗೆ ರಚನಾತ್ಮಕ ಸಹಕಾರವನ್ನು ಹೊರತುಪಡಿಸುವುದಿಲ್ಲ ಮತ್ತು ಸಿಂಡರ್ ಅನ್ನು ಇನ್ನಷ್ಟು ವೇಗವಾಗಿ ಮಾಡುವುದು ಅಥವಾ ಸಿಪಿಥಾನ್‌ನ ಮುಖ್ಯ ಭಾಗಕ್ಕೆ ಸಿದ್ಧಪಡಿಸಿದ ಬದಲಾವಣೆಗಳ ವರ್ಗಾವಣೆಯನ್ನು ಹೇಗೆ ವೇಗಗೊಳಿಸುವುದು ಎಂಬುದರ ಕುರಿತು ವಿಚಾರಗಳನ್ನು ಚರ್ಚಿಸಲು ಸಿದ್ಧವಾಗಿದೆ.

ಸಿಂಡರ್‌ನಲ್ಲಿ ಅಳವಡಿಸಲಾಗಿರುವ ಮುಖ್ಯ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳು:

  • ಬೈಟ್‌ಕೋಡ್‌ನ ಇನ್‌ಲೈನ್ ಕ್ಯಾಶಿಂಗ್ ("ನೆರಳು ಬೈಟ್‌ಕೋಡ್"). ಆಪ್ಟಿಮೈಸ್ ಮಾಡಬಹುದಾದ ವಿಶಿಷ್ಟ ಆಪ್‌ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಂದರ್ಭಗಳನ್ನು ಗುರುತಿಸುವುದು ಮತ್ತು ಅಂತಹ ಆಪ್‌ಕೋಡ್ ಅನ್ನು ವೇಗವಾದ ವಿಶೇಷ ಆಯ್ಕೆಗಳೊಂದಿಗೆ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಬದಲಾಯಿಸುವುದು ವಿಧಾನದ ಮೂಲತತ್ವವಾಗಿದೆ (ಉದಾಹರಣೆಗೆ, ಆಗಾಗ್ಗೆ ಕರೆಯಲ್ಪಡುವ ಕಾರ್ಯಗಳನ್ನು ಬದಲಾಯಿಸುವುದು).
  • ಉತ್ಸಾಹಿ ಕೊರೊಟಿನ್ ಮೌಲ್ಯಮಾಪನ. ತಕ್ಷಣವೇ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲಾದ ಅಸಿಂಕ್ ಫಂಕ್ಷನ್ ಕರೆಗಳಿಗಾಗಿ (ನಿರೀಕ್ಷಣೆಯು ಕಾಯುವಿಕೆಗೆ ಕಾರಣವಾಗುವುದಿಲ್ಲ ಮತ್ತು ಕಾರ್ಯವು ಹಿಂದಿನ ರಿಟರ್ನ್ ಸ್ಟೇಟ್‌ಮೆಂಟ್ ಅನ್ನು ತಲುಪುತ್ತದೆ), ಅಂತಹ ಕಾರ್ಯಗಳ ಫಲಿತಾಂಶವು ಕೊರೂಟಿನ್ ಅನ್ನು ರಚಿಸದೆ ಅಥವಾ ಈವೆಂಟ್ ಲೂಪ್ ಅನ್ನು ಒಳಗೊಳ್ಳದೆ ನೇರವಾಗಿ ಬದಲಿಸಲಾಗುತ್ತದೆ. ಅಸಿಂಕ್/ವೇಯ್ಟ್ ಅನ್ನು ಹೆಚ್ಚು ಬಳಸುವ Facebook ಕೋಡ್‌ನಲ್ಲಿ, ಆಪ್ಟಿಮೈಸೇಶನ್ ಫಲಿತಾಂಶವು ಸುಮಾರು 5% ವೇಗವನ್ನು ನೀಡುತ್ತದೆ.
  • ವೈಯಕ್ತಿಕ ವಿಧಾನಗಳು ಮತ್ತು ಕಾರ್ಯಗಳ ಮಟ್ಟದಲ್ಲಿ ಆಯ್ದ JIT ಸಂಕಲನ (ವಿಧಾನ-ಒಂದು-ಸಮಯ). "-X jit" ಆಯ್ಕೆ ಅಥವಾ PYTHONJIT=1 ಪರಿಸರ ವೇರಿಯೇಬಲ್ ಮೂಲಕ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಅನೇಕ ಕಾರ್ಯಕ್ಷಮತೆ ಪರೀಕ್ಷೆಗಳ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು 1.5-4 ಪಟ್ಟು ವೇಗಗೊಳಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ. JIT ಸಂಕಲನವು ಆಗಾಗ್ಗೆ ಕಾರ್ಯಗತಗೊಳ್ಳುವ ಕಾರ್ಯಗಳಿಗೆ ಮಾತ್ರ ಸಂಬಂಧಿಸಿದೆ, ಅಪರೂಪವಾಗಿ ಬಳಸಲಾಗುವ ಕಾರ್ಯಗಳಿಗಾಗಿ ಇದನ್ನು ಬಳಸುವುದು ಸೂಕ್ತವಲ್ಲ, ಅದರ ಸಂಕಲನ ಓವರ್ಹೆಡ್ ಪ್ರೋಗ್ರಾಂ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ನಿಧಾನಗೊಳಿಸುತ್ತದೆ.

    “-X jit-list-file=/path/to/jitlist.txt” ಆಯ್ಕೆಯ ಮೂಲಕ ಅಥವಾ ಪರಿಸರ ವೇರಿಯಬಲ್ “PYTHONJITLISTFILE=/path/to/jitlist.txt” ಮೂಲಕ ನೀವು JIT ಕಾರ್ಯಗಳ ಪಟ್ಟಿಯೊಂದಿಗೆ ಫೈಲ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು ಬಳಸಬಹುದು (ಮಾರ್ಗ ಸ್ವರೂಪ .to.module:funcname ಅಥವಾ path.to.module:ClassName.method_name). ಪ್ರೊಫೈಲಿಂಗ್ ಫಲಿತಾಂಶಗಳ ಆಧಾರದ ಮೇಲೆ JIT ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಬೇಕಾದ ಕಾರ್ಯಗಳ ಪಟ್ಟಿಯನ್ನು ನಿರ್ಧರಿಸಬಹುದು. ಭವಿಷ್ಯದಲ್ಲಿ, ಕ್ರಿಯಾತ್ಮಕ ಕರೆಗಳ ಆವರ್ತನದ ಆಂತರಿಕ ವಿಶ್ಲೇಷಣೆಯ ಆಧಾರದ ಮೇಲೆ ಡೈನಾಮಿಕ್ JIT ಸಂಕಲನಕ್ಕೆ ಬೆಂಬಲವನ್ನು ನಿರೀಕ್ಷಿಸಲಾಗಿದೆ, ಆದರೆ Instagram ನಲ್ಲಿ ಪ್ರಕ್ರಿಯೆಗಳನ್ನು ಪ್ರಾರಂಭಿಸುವ ನಿಶ್ಚಿತಗಳನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಂಡು, JIT ಸಂಕಲನವು ಆರಂಭಿಕ ಹಂತದಲ್ಲಿ ಫೇಸ್‌ಬುಕ್‌ಗೆ ಸಹ ಸೂಕ್ತವಾಗಿದೆ.

    JIT ಮೊದಲು ಪೈಥಾನ್ ಬೈಟ್‌ಕೋಡ್ ಅನ್ನು ಉನ್ನತ-ಮಟ್ಟದ ಮಧ್ಯಂತರ ಪ್ರಾತಿನಿಧ್ಯವಾಗಿ (HIR) ಪರಿವರ್ತಿಸುತ್ತದೆ, ಇದು ಪೈಥಾನ್ ಬೈಟ್‌ಕೋಡ್‌ಗೆ ತಕ್ಕಮಟ್ಟಿಗೆ ಹತ್ತಿರದಲ್ಲಿದೆ, ಆದರೆ ಸ್ಟಾಕ್-ಆಧಾರಿತ ಒಂದರ ಬದಲಿಗೆ ರಿಜಿಸ್ಟರ್-ಆಧಾರಿತ ವರ್ಚುವಲ್ ಯಂತ್ರವನ್ನು ಬಳಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಪ್ರಕಾರದ ಮಾಹಿತಿ ಮತ್ತು ಹೆಚ್ಚುವರಿಯನ್ನು ಸಹ ಬಳಸುತ್ತದೆ. ಕಾರ್ಯಕ್ಷಮತೆ-ನಿರ್ಣಾಯಕ ವಿವರಗಳು (ಉದಾಹರಣೆಗೆ ಉಲ್ಲೇಖ ಎಣಿಕೆಯಂತಹ) . HIR ಅನ್ನು ನಂತರ SSA (ಸ್ಥಿರ ಏಕ ನಿಯೋಜನೆ) ರೂಪಕ್ಕೆ ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಉಲ್ಲೇಖ ಎಣಿಕೆಯ ಫಲಿತಾಂಶಗಳು ಮತ್ತು ಮೆಮೊರಿ ಬಳಕೆಯ ಡೇಟಾವನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳುವ ಆಪ್ಟಿಮೈಸೇಶನ್ ಹಂತಗಳ ಮೂಲಕ ಹೋಗುತ್ತದೆ. ಪರಿಣಾಮವಾಗಿ, ಅಸೆಂಬ್ಲಿ ಭಾಷೆಗೆ ಸಮೀಪದಲ್ಲಿ ಕೆಳಮಟ್ಟದ ಮಧ್ಯಂತರ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು (LIR) ರಚಿಸಲಾಗಿದೆ. LIR-ಆಧಾರಿತ ಆಪ್ಟಿಮೈಸೇಶನ್‌ಗಳ ಮತ್ತೊಂದು ಹಂತದ ನಂತರ, asmjit ಲೈಬ್ರರಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಅಸೆಂಬ್ಲಿ ಸೂಚನೆಗಳನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ.

  • ಮಾಡ್ಯೂಲ್‌ಗಳಿಗೆ ಕಟ್ಟುನಿಟ್ಟಾದ ಮೋಡ್. ಕಾರ್ಯವು ಮೂರು ಘಟಕಗಳನ್ನು ಒಳಗೊಂಡಿದೆ: ಟೈಪ್ ಸ್ಟ್ರಿಕ್ಟ್ ಮಾಡ್ಯೂಲ್. ಮಾಡ್ಯೂಲ್‌ನ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯು ಆ ಮಾಡ್ಯೂಲ್‌ನ ಹೊರಗಿನ ಕೋಡ್‌ನ ಮೇಲೆ ಯಾವುದೇ ಪರಿಣಾಮ ಬೀರುವುದಿಲ್ಲ ಎಂದು ನಿರ್ಧರಿಸುವ ಸ್ಥಿರ ವಿಶ್ಲೇಷಕ. ಮಾಡ್ಯೂಲ್‌ಗಳು ಕಟ್ಟುನಿಟ್ಟಾದ ಮೋಡ್‌ನಲ್ಲಿವೆ ಎಂದು ನಿರ್ಧರಿಸುವ ಮಾಡ್ಯೂಲ್ ಲೋಡರ್ (ಕೋಡ್ "ಆಮದು __ ಕಟ್ಟುನಿಟ್ಟಾದ__" ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ), ಇತರ ಮಾಡ್ಯೂಲ್‌ಗಳೊಂದಿಗೆ ಛೇದಕಗಳ ಅನುಪಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ಕಟ್ಟುನಿಟ್ಟಾದ ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ಸ್ಟ್ರಿಕ್ಟ್ ಮಾಡ್ಯೂಲ್ ವಸ್ತುವಾಗಿ sys.modules ಗೆ ಲೋಡ್ ಮಾಡುತ್ತದೆ.
  • ಸ್ಟ್ಯಾಟಿಕ್ ಪೈಥಾನ್ ಪ್ರಾಯೋಗಿಕ ಬೈಟ್‌ಕೋಡ್ ಕಂಪೈಲರ್ ಆಗಿದ್ದು, ಇದು JIT ಸಂಕಲನಕ್ಕೆ ಧನ್ಯವಾದಗಳು ವೇಗವಾಗಿ ಚಲಿಸುವ ಟೈಪ್-ನಿರ್ದಿಷ್ಟ ಬೈಟ್‌ಕೋಡ್ ಅನ್ನು ರಚಿಸಲು ಟೈಪ್ ಟಿಪ್ಪಣಿಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಕೆಲವು ಪರೀಕ್ಷೆಗಳಲ್ಲಿ, ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಸಿಪಿಥಾನ್‌ಗೆ ಹೋಲಿಸಿದರೆ ಸ್ಟ್ಯಾಟಿಕ್ ಪೈಥಾನ್ ಮತ್ತು ಜೆಐಟಿಯ ಸಂಯೋಜನೆಯು 7 ಬಾರಿ ಕಾರ್ಯಕ್ಷಮತೆ ಸುಧಾರಣೆಗಳನ್ನು ಪ್ರದರ್ಶಿಸುತ್ತದೆ. ಅನೇಕ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಫಲಿತಾಂಶಗಳು MyPyC ಮತ್ತು Cython ಕಂಪೈಲರ್‌ಗಳನ್ನು ಬಳಸುವುದಕ್ಕೆ ಹತ್ತಿರದಲ್ಲಿದೆ ಎಂದು ಅಂದಾಜಿಸಲಾಗಿದೆ.

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ