From: Andy on
On Jan 12, 11:12 am, scattered <still.scatte...(a)gmail.com> wrote:
> I don't see why it would be impossible. Optimizing compilers exist and
> by using similar techniques it should be possible to write a compiler
> that uses C as both the source and target language. How useful this
> would be is another question. The resulting code would need to be
> humanly readable if the tool would be of any use and the would
> probably place severe restrictions on the sorts of optimizations that
> can be done. I would be surprised if no work along these lines has
> been done.

The optimizations would have to be limited to that subset that can be
implemented at the C level. That might be difficult to do, since the
optimization is not usually concerned with whether or not the
optimized version can be portrayed in C.

The generated C code would have to look similar (same variable names,
etc.) to the original to be useful.

And if the compiler can show you those optimizations in the form of
modified code, why not have it skip showing you the code and just
optimize it behind the scenes like it always does?

Andy
From: karthikbalaguru on
On Jan 12, 11:03 pm, Walter Banks <wal...(a)bytecraft.com> wrote:
> karthikbalaguru wrote:
> > Is there a tool for C language that
> > could suggest an optimized/alternate
> > programming logic for the function that
> > is written ?
>
> > The optimized/alternate logic can be
> > suggested as soon as we finish coding
> > for one function or it can be suggested
> > as soon as the code is compiled/parsed
> > by that tool.
>
> > It will be even more helpful if that tool
> > also provides the cycle counts, cache
> > usage, cache misses and lines of code
> > also.
>
> > It would be better if that tool has an
> > option to enable / disable this feature
> > either through compile time or some
> > other configurations.
>
> Metrics are available in many (especially embedded system)
> compilers as part of the listing and report files. Better
> compilers do a good job of instruction scheduling and
> cache management in their code generation.
>

Yes, many embedded system based
compilers support the report generation
of cache misses, cache usage and
instruction cycles. I would like to
convey that it would be better if the
same tool provides those various
optimization reports for both the
logics apart from the optimized/
alternate logic suggested by it.

> The issue is the larger one of function rewriting where
> the problem is larger and less work has been done
> looking for solutions.
>

It is strange that no much research or
work is done in this area ? Strange !!

I think, this is one of the most required
tool for efficient software development
in any kind of platform.

Thx in advans,
Karthik Balaguru
From: karthikbalaguru on
On Jan 12, 10:56 pm, Walter Banks <wal...(a)bytecraft.com> wrote:
> scattered wrote:
> > On Jan 12, 11:04 am, acd <acd4use...(a)lycos.de> wrote:
>
> > > (More) Programming Perls
> > > and
> > > Hacker's delight.
>
> ---------------------------------------
>
>
>
> > I don't see why it would be impossible. Optimizing compilers exist and
> > by using similar techniques it should be possible to write a compiler
> > that uses C as both the source and target language. How useful this
> > would be is another question. The resulting code would need to be
> > humanly readable if the tool would be of any use and the would
> > probably place severe restrictions on the sorts of optimizations that
> > can be done. I would be surprised if no work along these lines has
> > been done.
>
> Programming Pearls and Hacker's delight are both must haves
> even if you are only remotely interested programming algorithms.
>
> There has been quite a bit of work done in compilers at the
> expression level to optimize algorithms and statements
> implementing functionally equivalent statements in the
> generated code.
>

True !

> The problem in the bigger scale suggested by the op is the
> ability to recognize the larger overview of the programming
> objective at the scale of turning a bubble sort into a quick
> sort.
>

Exactly, this is the actual problem that
has to be addressed.

> At the statement level recognizing functionality is generally
> a simple task. At the function level this a significantly larger
> problem.
>
> The solution may be mostly hard work and processing
> cycles. A start may be to catalog common functions
> and implementations and create a significant tool
> to recognize these functions from source code extracting
> out key function parameters and then using these to select
> alternative implementations.
>
> As well as the data base of common functions a significant
> piece of expert system software would need to be written
> to extract knowledge out of the source.
>
> Do-able probably.
>

Thx in advans,
Karthik Balaguru

From: karthikbalaguru on
On Jan 13, 12:05 am, Andy <jonesa...(a)comcast.net> wrote:
> On Jan 12, 11:12 am, scattered <still.scatte...(a)gmail.com> wrote:
>
> > I don't see why it would be impossible. Optimizing compilers exist and
> > by using similar techniques it should be possible to write a compiler
> > that uses C as both the source and target language. How useful this
> > would be is another question. The resulting code would need to be
> > humanly readable if the tool would be of any use and the would
> > probably place severe restrictions on the sorts of optimizations that
> > can be done. I would be surprised if no work along these lines has
> > been done.
>
> The optimizations would have to be limited to that subset that can be
> implemented at the C level.

True !

> That might be difficult to do, since the
> optimization is not usually concerned with whether or not the
> optimized version can be portrayed in C.
>

True, but i am looking only at the
C level optimization.

> The generated C code would have to look similar (same variable names,
> etc.) to the original to be useful.
>

I think, in such scenarios, the tool should
be having tremendous knowledge about
the software/program and take care
end to end. Maybe, the tool can generate
report on the changes and the reason for
the changes so the developer can use
it for further developments or any other
maintenance activities on that code.

> And if the compiler can show you those optimizations in the form of
> modified code, why not have it skip showing you the code and just
> optimize it behind the scenes like it always does?
>

Maybe, it would be better if it
can do it before user rather than
behind the scenes so that the user
is aware of the kind of optimzations
that are being done and could be
taken care. It is also needed so that
the developer will be able to take care
of further developments on the same
program/software and also for the
maintenance activities on that
program/software.

Thx in advans,
Karthik Balaguru
From: David Schwartz on
On Jan 12, 9:12 am, scattered <still.scatte...(a)gmail.com> wrote:

> I don't see why it would be impossible. Optimizing compilers exist and
> by using similar techniques it should be possible to write a compiler
> that uses C as both the source and target language. How useful this
> would be is another question. The resulting code would need to be
> humanly readable if the tool would be of any use and the would
> probably place severe restrictions on the sorts of optimizations that
> can be done. I would be surprised if no work along these lines has
> been done.

That would be a useless tool, all it would do would be obfuscate. If
the code contains optimizations that can be made by machine, what is
the point of modifying the source code? Let the machine make the
optimizations when the code is compiled and keep the source intact.

DS