Bird
Raised Fist0
Compiler Designknowledge~5 mins

Local optimization (peephole) in Compiler Design - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is local optimization (peephole) in compiler design?
Local optimization, also called peephole optimization, is a technique where the compiler looks at a small set of instructions (a "peephole") and tries to replace them with a more efficient sequence without changing the program's behavior.
Click to reveal answer
beginner
Why is peephole optimization called 'local' optimization?
Because it focuses on a small, localized part of the code—usually just a few instructions at a time—rather than analyzing the entire program or large blocks of code.
Click to reveal answer
beginner
Give an example of a simple peephole optimization.
Replacing a sequence like "LOAD A; LOAD A" with just "LOAD A" because loading the same value twice is redundant.
Click to reveal answer
intermediate
What kinds of improvements can peephole optimization achieve?
It can reduce the number of instructions, remove redundant operations, simplify calculations, and improve execution speed and code size.
Click to reveal answer
intermediate
What is a limitation of peephole optimization?
It only looks at small instruction windows and cannot optimize across larger code blocks or consider global program behavior.
Click to reveal answer
What does peephole optimization primarily focus on?
ASmall sequences of instructions
BEntire program structure
CMemory allocation
DUser interface design
Which of the following is an example of peephole optimization?
AChanging variable names for clarity
BReplacing 'LOAD A; LOAD A' with 'LOAD A'
CRearranging functions in a file
DAdding comments to code
What is a key benefit of peephole optimization?
AImproves code readability
BIncreases program size
CReduces instruction count
DChanges program logic
Which is NOT a characteristic of peephole optimization?
ASimplifies calculations
BWorks on small instruction windows
CRemoves redundant instructions
DAnalyzes entire program flow
Why might peephole optimization miss some improvements?
AIt only looks at small parts of code
BIt changes program logic
CIt requires user input
DIt only works on source code comments
Explain what local optimization (peephole) is and why it is useful in compiler design.
Think about how looking at just a few instructions can help make code faster or smaller.
You got /4 concepts.
    Describe a simple example of peephole optimization and its effect on the code.
    Consider removing repeated instructions or simplifying calculations.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main goal of local optimization (peephole) in compiler design?
      easy
      A. To improve small sequences of instructions by removing redundancies
      B. To rewrite the entire program in a different language
      C. To increase the number of instructions for clarity
      D. To change the program's output for optimization

      Solution

      1. Step 1: Understand local optimization scope

        Local optimization focuses on small instruction sequences, not the whole program.
      2. Step 2: Identify the goal of peephole optimization

        Peephole optimization removes unnecessary or redundant instructions to make code faster and smaller without changing its meaning.
      3. Final Answer:

        To improve small sequences of instructions by removing redundancies -> Option A
      4. Quick Check:

        Local optimization = remove redundancies [OK]
      Hint: Focus on small instruction sequences and redundancy removal [OK]
      Common Mistakes:
      • Thinking it rewrites the whole program
      • Believing it changes program output
      • Assuming it adds more instructions
      2. Which of the following is a correct example of a peephole optimization?
      easy
      A. Replacing LOAD A; LOAD A with LOAD A
      B. Changing variable names for readability
      C. Adding comments to the code
      D. Rearranging functions in the source file

      Solution

      1. Step 1: Identify peephole optimization examples

        Peephole optimization looks at small instruction sequences to remove redundancies.
      2. Step 2: Evaluate each option

        Replacing LOAD A; LOAD A with LOAD A removes duplicate instructions, which is a classic peephole optimization. Options A, B, and D do not optimize instructions.
      3. Final Answer:

        Replacing LOAD A; LOAD A with LOAD A -> Option A
      4. Quick Check:

        Remove duplicate instructions = peephole optimization [OK]
      Hint: Look for removing repeated instructions in short sequences [OK]
      Common Mistakes:
      • Confusing code readability changes with optimization
      • Thinking comments affect optimization
      • Assuming rearranging functions is peephole optimization
      3. Consider this instruction sequence before peephole optimization:
      LOAD R1, #5
      ADD R1, R1, #0
      STORE R1, 100(R2)

      What will be the optimized sequence after applying peephole optimization?
      medium
      A. LOAD R1, #5 ADD R1, #0 STORE R1, 100(R2)
      B. LOAD R1, #5 ADD R1, R1, #0 STORE R1, 100(R2)
      C. LOAD R1, #5 STORE R1, 100(R2)
      D. ADD R1, R1, #0 STORE R1, 100(R2)

      Solution

      1. Step 1: Identify redundant instructions

        The instruction ADD R1, R1, #0 adds zero, which does not change the value in R1, so it is redundant.
      2. Step 2: Remove redundant instruction

        Removing the redundant ADD instruction leaves LOAD R1, #5 and STORE R1, 100(R2).
      3. Final Answer:

        LOAD R1, #5 STORE R1, 100(R2) -> Option C
      4. Quick Check:

        Remove add zero = optimized sequence [OK]
      Hint: Remove instructions that do not change values (like add zero) [OK]
      Common Mistakes:
      • Keeping redundant add zero instruction
      • Removing load instruction incorrectly
      • Misunderstanding instruction effects
      4. Identify the error in this peephole optimization attempt:
      Original: LOAD R2, #10
      SUB R2, R2, #0
      STORE R2, 200(R3)
      
      Optimized: LOAD R2, #10
      SUB R2, R2, #10
      STORE R2, 200(R3)
      medium
      A. The load instruction should be removed
      B. No error, optimization is correct
      C. The store instruction is missing
      D. The subtraction of zero was incorrectly replaced with subtraction of ten

      Solution

      1. Step 1: Compare original and optimized subtraction

        Original subtracts zero, which does nothing. Optimized subtracts ten, which changes the value incorrectly.
      2. Step 2: Identify the error in optimization

        Replacing subtraction by zero with subtraction by ten changes program meaning, which is incorrect for peephole optimization.
      3. Final Answer:

        The subtraction of zero was incorrectly replaced with subtraction of ten -> Option D
      4. Quick Check:

        Incorrect instruction change = error in peephole optimization [OK]
      Hint: Ensure optimized instructions do not change program meaning [OK]
      Common Mistakes:
      • Changing instruction values incorrectly
      • Removing necessary instructions
      • Assuming all changes are optimizations
      5. Given this code snippet:
      LOAD R3, #0
      ADD R3, R3, #5
      ADD R3, R3, #0
      STORE R3, 300(R4)

      Which peephole optimization sequence correctly optimizes this code without changing its meaning?
      hard
      A. LOAD R3, #0 ADD R3, R3, #0 STORE R3, 300(R4)
      B. LOAD R3, #5 STORE R3, 300(R4)
      C. ADD R3, R3, #5 STORE R3, 300(R4)
      D. LOAD R3, #5 ADD R3, R3, #0 STORE R3, 300(R4)

      Solution

      1. Step 1: Analyze the original instructions

        Loading zero into R3, then adding 5, then adding 0, is equivalent to loading 5 directly into R3.
      2. Step 2: Apply peephole optimization

        Replace the sequence with a single instruction LOAD R3, #5 and then store. This removes redundant instructions without changing meaning.
      3. Final Answer:

        LOAD R3, #5 STORE R3, 300(R4) -> Option B
      4. Quick Check:

        Combine load and add zero to direct load [OK]
      Hint: Combine load and add instructions when possible [OK]
      Common Mistakes:
      • Keeping redundant add zero
      • Not combining load and add
      • Removing load instruction incorrectly
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard