I had an interesting discussion with one of my colleague today. His believe is that we shouldn’t use report writers to generate reports and use a task scheduler to run the report writer. Instead, his preference would be to write a C program for each report required. If it is continuously generating data feed to export to external systems then it should runs as a service (what he called “background process”). There are too much overhead of running a report writer through a task scheduler. A C program would be quicker and less resource intensive.
He may have a point there. The crontab is primitive in what it can do. Crontab can not check for dependency of tasks, can monitor the running of the the tasks, can not check for multi-instances running, can not terminate a task if it take longer than normal to run, can not easily notify interesting parties of issues. The report writer seems to fragile and has plenty of bugs in them (created by the person who generate the report source and by inheriting from the third-party software).
C programs can do more than just output reports. C programs can update the database, email reports, print reports, etc.
However, I personally can not imaging life without using report writers:
- It is far easier to maintain and read report writer code than to maintain C program code
- It is faster to generate report writer code than to generate a C program code
- Modern report writers can do sub-reports, summary, format, graphics, etc while C program required complex including of libraries to do the same thing
- Non-programmers can write report writer code while only developer who know C can write the program code
- If C program code is not written properly, memory leaks can occur. Report writer code will not have memory leaks.
I have written C programs to generate reports that could have done with report writers. I don’t see any difference in performance improvement with the C programs at all.