คำถามติดแท็ก compilation

การคอมไพล์คือการแปลงข้อความต้นฉบับเป็นรูปแบบอื่นหรือการเป็นตัวแทน การใช้แท็กนี้โดยทั่วไปมีไว้สำหรับคำถามเกี่ยวกับการแปลงภาษาโปรแกรมเป็นรหัสเครื่อง โดยปกติแท็กนี้จะใช้กับแท็กอื่นที่ระบุประเภทของข้อความต้นฉบับเช่นแท็กภาษาการเขียนโปรแกรม (C, C ++, Go เป็นต้น) และแท็กที่ระบุเครื่องมือหรือคอมไพเลอร์ที่ใช้สำหรับการแปลง (gcc, Visual Studio, ฯลฯ ).

9
Java: ฉันจะรวบรวมโครงสร้างไดเร็กทอรีทั้งหมดของโค้ดได้อย่างไร
กรณีการใช้งานเป็นเรื่องง่าย ฉันได้รับซอร์สไฟล์ที่สร้างโดยใช้ Eclipse ดังนั้นจึงมีโครงสร้างไดเร็กทอรีแบบลึกซึ่งคลาส Java ใด ๆ สามารถอ้างถึงคลาส Java อื่นในโฟลเดอร์ลูกพี่น้องหรือพาเรนต์เดียวกัน ฉันจะรวบรวมสิ่งทั้งหมดนี้จากเทอร์มินัลโดยใช้ javac ได้อย่างไร

7
เขียนทับฟังก์ชันที่กำหนดในโมดูล แต่ก่อนที่จะใช้ในเฟสรันไทม์?
ลองทำอะไรที่ง่ายมาก # Foo.pm package Foo { my $baz = bar(); sub bar { 42 }; ## Overwrite this print $baz; ## Before this is executed } มีอยู่หรือไม่ที่ฉันสามารถtest.plเรียกใช้โค้ดที่เปลี่ยนแปลงสิ่งที่$bazตั้งไว้และทำให้Foo.pmพิมพ์อย่างอื่นบนหน้าจอได้ # maybe something here. use Foo; # maybe something here เป็นไปได้ไหมที่คอมไพเลอร์เฟสจะบังคับให้พิมพ์ด้านบน7?
20 perl  compilation 

2
การประกาศประเภทที่ต้องการใน Julia
มีวิธีการอย่างชัดเจนต้องในจูเลีย (เช่นบอกว่าภายในโมดูลหรือแพคเกจ) ที่ใด ๆประเภท จะต้อง ได้รับการประกาศ ? เช่นPackageCompilerหรือLint.jlมีการสนับสนุนสำหรับการตรวจสอบดังกล่าว การกระจายมาตรฐานของ Julia นั้นกว้างกว่านั้นมีตัววิเคราะห์โค้ดแบบคงที่หรือเทียบเท่าที่สามารถช่วยตรวจสอบข้อกำหนดนี้ได้หรือไม่? เป็นตัวอย่างที่สร้างแรงบันดาลใจสมมติว่าเราต้องการตรวจสอบให้แน่ใจว่าฐานรหัสการผลิตที่เพิ่มขึ้นของเรายอมรับเฉพาะรหัสที่พิมพ์อยู่เสมอภายใต้สมมติฐานที่ว่ารหัสฐานขนาดใหญ่ที่มีการประกาศประเภทมักจะบำรุงรักษาได้มากกว่า หากเราต้องการบังคับใช้เงื่อนไขนั้น Julia ในการกระจายมาตรฐานได้จัดเตรียมกลไกใด ๆ เพื่อให้มีการประกาศประเภทหรือช่วยให้บรรลุเป้าหมายนั้นหรือไม่? (เช่นมีสิ่งใดบ้างที่สามารถตรวจสอบได้ผ่านทาง linters, กระทำ hooks หรือเทียบเท่า?)

1
ทำไมรหัสนี้ใช้เวลานานในการคอมไพล์ด้วย g ++
พิจารณารหัสต่อไปนี้: template<int i> class A { typedef A<i-1> B; B x, y; }; template<> class A<0> { char m; }; int main() { A<LEVEL> a; } เมื่อทำการเปรียบเทียบการคอมไพล์ด้วย g ++ โดยคำสั่ง Bash ต่อไปนี้ (ด้วย g ++ 8.3.0) for ((level=1; level<30; ++level)); do echo -n ${level}, /usr/bin/time -f %U g++ -DLEVEL=$level test.cpp …

2
วิธีกำจัดค่าใช้จ่ายของ JIT ใน Julia ที่ปฏิบัติการได้ (ด้วย MWE)
ฉันกำลังใช้PackageCompilerหวังว่าจะสร้างไฟล์ปฏิบัติการที่กำจัดโอเวอร์เฮดการรวบรวมแบบทันเวลา เอกสารอธิบายว่าฉันต้องกำหนดฟังก์ชั่นjulia_mainเพื่อเรียกตรรกะของโปรแกรมและเขียน "snoop file" สคริปต์ที่เรียกใช้ฟังก์ชันที่ฉันต้องการคอมไพล์ล่วงหน้า My julia_mainรับอาร์กิวเมนต์เดี่ยวตำแหน่งของไฟล์ที่มีข้อมูลอินพุตที่จะวิเคราะห์ ดังนั้นเพื่อให้สิ่งต่าง ๆ ง่ายขึ้นไฟล์ snoop ของฉันเพียงแค่โทรออกครั้งเดียวjulia_mainด้วยไฟล์อินพุตเฉพาะ ดังนั้นฉันหวังว่าจะเห็นไฟล์ปฏิบัติการที่สร้างขึ้นนั้นทำงานได้ดีและรวดเร็ว (ไม่มีการคอมไพล์โอเวอร์เฮด) เมื่อดำเนินการกับไฟล์อินพุตเดียวกัน แต่อนิจจานั่นไม่ใช่สิ่งที่ฉันเห็น ในตัวอย่างจูเลียใหม่julia_mainจะใช้เวลาประมาณ 74 วินาทีสำหรับการดำเนินการครั้งแรกและประมาณ 4.5 วินาทีสำหรับการดำเนินการครั้งต่อไป ไฟล์เรียกทำงานจะใช้เวลาประมาณ 50 วินาทีในแต่ละครั้งที่เรียกใช้ การใช้งานbuild_executableฟังก์ชั่นของฉันเป็นดังนี้: julia> using PackageCompiler julia> build_executable("d:/philip/source/script/julia/jsource/SCRiPTMain.jl", "testexecutable", builddir = "d:/temp/builddir4", snoopfile = "d:/philip/source/script/julia/jsource/snoop.jl", compile = "all", verbose = true) คำถาม: ข้อโต้แย้งข้างต้นถูกต้องเพื่อให้บรรลุเป้าหมายของฉันในการปฏิบัติการที่ไม่มีค่าใช้จ่าย JIT หรือไม่? คำแนะนำอื่น ๆ สำหรับฉัน …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.