Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #[inline(never)]
- fn eat(u: u8) {
- println!("{}", u);
- }
- #[inline(never)]
- fn foo(args: &[u8]) {
- for i in args {
- eat(*i);
- }
- }
- #[inline(never)]
- fn foo2(args: &[u8]) {
- unsafe {
- let y = args.as_ptr().offset(args.len() as isize);
- let mut x = args.as_ptr();
- while (x != y) {
- eat(*x);
- x = x.offset(1);
- }
- }
- }
- #[inline(never)]
- fn produce() -> Box<Vec<u8>> {
- /* Busywork so compiler does not inline shit */
- let scores = [7, 8, 9, 10, 11, 12, 13, 14, 15];
- let mut v = Box::new(Vec::new());
- {
- v.extend_from_slice(&scores);
- }
- v
- }
- fn main() {
- // busywork to break inlining
- let x = produce();
- foo(x.as_slice());
- foo2(x.as_slice());
- }
Add Comment
Please, Sign In to add comment