Article View: net.lang.c
Article #9456Re: Significant deficiency in C
From: Henry Spencer
Date: Sat, 04 Oct 1986 05:49
Date: Sat, 04 Oct 1986 05:49
35 lines
2473 bytes
2473 bytes
> That C promotes all values of type char to int before using them in an
> expression ... [is a performance disaster on an 8-bit machine] ...
> I think this is a significant deficiency in C. Is ANSI doing anything to
> eliminate this or decrease its effect? ... Is a potential doubling or
> tripling of text processing speed not significant enough to be worth
> redefining a programming language for?
Only when it's really necessary to redefine the language to solve the
problem. The X3J11 drafts state clearly that the semantics as given in
the draft define the required effects, and the compiler is free to get
those effects by whatever means it chooses. In particular, if it can
determine that the result will only be 8 bits and that no overflow hassles
intervene, it is entirely free to use 8 bits, essentially optimizing out
the promotion. This is in fact an example the drafts use.
> Perhaps the problem is that UNIX and C have traditionally been implemented
> only on machines ...in which using an 8-bit register always automatically
> tied up a 16-bit or larger register...
This is quite true, but as it happens it's not that hard for a compiler for
a small machine to optimize the code to use 8 bits most of the time. The
only unoptimizable case is in function calls, and that is less of a
hassle. It is, of course, quite possible to write a stupid compiler that
doesn't try to do this optimization. In fact, there are quite a few of
them. Particularly in the 8088 world, which is such a huge and uncritical
market that any get-rich-quick artist who puts an attractive package around
shoddy software can count on making a profit. (There *is* some pretty good
8088 software, but Sturgeon's Law -- "95% of everything is crap" -- very
definitely applies.)
In short, you are being victimized by a stupid compiler, not a stupid
language.
--
Henry Spencer @ U of Toronto Zoology
{allegra,ihnp4,decvax,pyramid}!utzoo!henry
Technical Details
Message-ID:
<7182@utzoo.UUCP>Path:
arc1-ca.pugleaf.net!utzoo!henryReferences:
<4200@brl-smoke.ARPA>Show Full Headers
Complete Article Headers
Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: arc1-ca.pugleaf.net!utzoo!henry From: henry@utzoo.UUCP (Henry Spencer) Newsgroups: net.lang.c Subject: Re: Significant deficiency in C Message-ID: <7182@utzoo.UUCP> Date: Sat, 4-Oct-86 01:49:25 EDT Article-I.D.: utzoo.7182 Posted: Sat Oct 4 01:49:25 1986 Date-Received: Sat, 4-Oct-86 01:49:25 EDT References: <4200@brl-smoke.ARPA> Organization: U of Toronto Zoology Lines: 35