dimitriv / Ziria

A domain-specific-language and compiler for low-level bitstream processing.
92 stars 18 forks source link

print array function is inefficient when applied on function that returns an array #36

Open bradunov opened 9 years ago

bradunov commented 9 years ago

print array function is inefficient when applied on function that returns an array. Consider println pss(3), where pss(3) :: Int -> Arr[62] Int The code generated by Ziria is: for (int print_cnt_96 = 0; print_cnt_96 < 62; print_cnt_96++) { calign complex16 print_val_97;

            mem_idx99 = wpl_get_free_idx(pheap_ctx);
            pss_ln6_81(__retcall_pss_ln7_98, 62, 3, 1000, &pi_ln34_4);
            wpl_restore_free_idx(pheap_ctx, mem_idx99);
            __print_val_97 = __retcall_pss_ln7_98[__print_cnt_96];
            printf("(%ld,%ld)", __print_val_97.re, __print_val_97.im);
            printf("%s", ",");
        }

So we actually call pss function 62 times in this case! (which is potentially also incorrect).