Difference between revisions of "Iced Cakes Pipeline"
Jump to navigation
Jump to search
(→Studio) |
|||
Line 1: | Line 1: | ||
− | = | + | =Motivation= |
+ | Pipelines can increase throughput when processing a stream of data. | ||
− | = | + | =Backgroud= |
− | + | <youtube>3cqVtc2rDlg</youtube> | |
− | == | + | =Code To Use= |
− | + | ==Cakes== | |
− | + | ==Looping== | |
+ | [https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html Java For Loop] | ||
− | [https://www. | + | ==Phasers== |
+ | [https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Phaser.html class Phaser] ([http://www.baeldung.com/java-phaser Guide to the Java Phaser]) | ||
+ | : [https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Phaser.html#register-- register] | ||
+ | : [https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Phaser.html#arrive-- arrive] | ||
+ | : [https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Phaser.html#awaitAdvance-int- awaitAdvance] | ||
+ | =Questions To Ask Yourself= | ||
+ | # What are my tasks? | ||
+ | # What work does each task need to do? | ||
+ | # Upon what does each task depend? That is: what does each task have to wait for before it may proceed? | ||
+ | |||
+ | =Code To Implement= | ||
+ | {{CodeToImplement|CakePipeline|mixBakeAndIceCakes|pipeline.cake.studio}} | ||
+ | |||
+ | {{Parallel|public static IcedCake[] mixBakeAndIceCakes(Mixer mixer, Baker baker, Icer icer, int cakeCount)}} | ||
+ | |||
+ | =Testing Your Solution= | ||
==Visualization== | ==Visualization== | ||
− | + | {{Viz|CakePipelineVizApp|leggedrace.viz}} | |
+ | |||
+ | Click on the buttons on the right to visualize your solutions when you have implemented them. | ||
− | [[File: | + | [[File:CakePipelineScreenShot.png]] |
+ | ==Correctness== | ||
+ | {{TestSuite|CakePipelineTestSuite|pipeline.cake.viz}} | ||
− | + | {{TestSuite|PartialCreditLeggedRaceTestSuite|leggedrace.studio}} | |
− | |||
− | |||
− | + | When you are passing the tests and your visualization looks good, demo it to an instructor. |
Revision as of 08:17, 2 April 2018
Contents
Motivation
Pipelines can increase throughput when processing a stream of data.
Backgroud
Code To Use
Cakes
Looping
Phasers
class Phaser (Guide to the Java Phaser)
Questions To Ask Yourself
- What are my tasks?
- What work does each task need to do?
- Upon what does each task depend? That is: what does each task have to wait for before it may proceed?
Code To Implement
class: | CakePipeline.java | |
methods: | mixBakeAndIceCakes | |
package: | pipeline.cake.studio | |
source folder: | student/src/main/java |
method: public static IcedCake[] mixBakeAndIceCakes(Mixer mixer, Baker baker, Icer icer, int cakeCount)
(parallel implementation required)
Testing Your Solution
Visualization
class: | CakePipelineVizApp.java | VIZ |
package: | leggedrace.viz | |
source folder: | student/src//java |
Click on the buttons on the right to visualize your solutions when you have implemented them.
Correctness
class: | CakePipelineTestSuite.java | |
package: | pipeline.cake.viz | |
source folder: | testing/src/test/java |
class: | PartialCreditLeggedRaceTestSuite.java | |
package: | leggedrace.studio | |
source folder: | testing/src/test/java |
When you are passing the tests and your visualization looks good, demo it to an instructor.