From: graham@compass-da.com (Paul Graham)
Subject: Re: Language Efficiency
Date: 1995/04/19
Date: 1995-04-19T00:00:00+00:00 [thread overview]
Message-ID: <GRAHAM.95Apr19172404@canopus.compass-da.com> (raw)
In-Reply-To: dewar.797566928@gnat
Here's an example of language-based inefficiency. Suppose I want to allocate
a structure and initialize its fields to some safe value, say 0. In C I
would write
ptr = malloc(sizeof(struct_type));
memset(ptr, '\0', sizeof(struct_type));
In Ada I would write
ptr := new struct_type'(others => 0);
or
ptr := new struct_type; -- assuming I want the default values
The call to memset in the C example can be quite inefficient. memset does
not know that ptr is a word-aligned address, so it must fill in the
structure using byte moves. I suppose memset could be clever and check for
the alignment of ptr and the value of sizeof(struct_type), and jump to an
appropriate loop which uses byte moves, word moves, longword moves, etc.
The Ada code should know that ptr will be word-aligned. Assuming that it
doesn't first create a temporary aggregate, it should be able to fill in
ptr's fields efficiently using word moves.
I could achieve the same effect in C by writing
ptr = malloc(sizeof(struct_type));
ptr->x = 0;
ptr->y = 0;
...
but this style of initialization breaks easily if I ever add a new field to
struct_type.
Paul
--
Paul Graham graham@compass-da.com Compass Design Automation, Inc.
(speaking only for myself) "Cekoslovakyalilastiramadiklarimizdanmissiniz."
next prev parent reply other threads:[~1995-04-19 0:00 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
1995-04-02 0:00 Language Efficiency Robert C. Bethel
1995-04-04 0:00 ` Harold P Zbiegien
1995-04-04 0:00 ` Larry Kilgallen
1995-04-06 0:00 ` Robert Dewar
1995-04-04 0:00 ` Kennel
1995-04-05 0:00 ` Ray Toal
1995-04-07 0:00 ` Robert Dewar
1995-04-19 0:00 ` Fergus Henderson
1995-04-19 0:00 ` Robert Dewar
1995-04-20 0:00 ` Kennel
1995-04-19 0:00 ` Robert Dewar
[not found] ` <3m9o9q$igf@stc06.ctd.ornl.gov>
[not found] ` <D6ss6z.Gvw@mcshub.dcss.mcmaster.ca>
[not found] ` <dewar.797512974@gnat>
1995-04-19 0:00 ` Adam Beneschan
1995-04-19 0:00 ` Robert Dewar
[not found] ` <3mbmd5$s06@icebox.mfltd.co.uk>
1995-04-19 0:00 ` Multiple dispatch (was Re: C++ not OOP?) Robert I. Eachus
1995-04-19 0:00 ` Kenneth Almquist
1995-04-19 0:00 ` C++ not OOP? (Was: Language Efficiency Harley Davis
[not found] ` <D6uA77.Lqp@mcshub.dcss.mcmaster.ca>
[not found] ` <dewar.797566928@gnat>
[not found] ` <D6vxDG.JKJ@mcshub.dcss.mcmaster.ca>
[not found] ` <dewar.797636710@gnat>
[not found] ` <D6xF22.38H@mcshub.dcss.mcmaster.ca>
[not found] ` <dewar.797729041@gnat>
[not found] ` <3msdop$862@stc06.ctd.ornl.gov>
1995-04-19 0:00 ` Paul Graham [this message]
1995-04-19 0:00 ` Robert Dewar
[not found] ` <3mcfbf$psl@acmez.gatech.edu>
[not found] ` <3mgnkc$e3j@atlantis <3muaif$46u@atlantis.utmb.edu>
[not found] ` <3n0lsu$nio@druid.borland.com>
[not found] ` <3n0uvi$8jt@atlantis.utmb.edu>
1995-04-19 0:00 ` C++ not OOP? (Was: " Fernando Mato Mira
1995-04-19 0:00 ` Curtis Bass
1995-04-19 0:00 ` David Weller
1995-04-20 0:00 ` Curtis Bass
1995-04-20 0:00 ` David Weller
1995-04-20 0:00 ` Robert Dewar
1995-04-21 0:00 ` Curtis Bass
1995-04-21 0:00 ` Robert Dewar
1995-04-20 0:00 ` Curtis Bass
1995-04-21 0:00 ` Robert Martin
1995-04-21 0:00 ` Ed Osinski
1995-04-21 0:00 ` Fernando Mato Mira
1995-04-21 0:00 ` Robert Martin
1995-04-20 0:00 ` Matt Austern
1995-04-21 0:00 ` Robert Martin
1995-04-21 0:00 ` Curtis Bass
1995-04-21 0:00 ` Ed Osinski
1995-04-21 0:00 ` Matt Austern
1995-04-22 0:00 ` Robert Martin
1995-04-22 0:00 ` OOAD courses by Object Mentor cjames
1995-04-22 0:00 ` C++ not OOP? (Was: Language Efficiency David Weller
1995-04-21 0:00 ` Robert Martin
1995-04-21 0:00 ` Curtis Bass
[not found] ` <3mcoh6$add@Starbase.NeoSoft.COM>
[not found] ` <3mdrpf$3o9@disunms.epfl.ch>
[not found] ` <dewar.797608300@gnat>
[not found] ` <3mg45s$5r7@disunms.epfl.ch>
[not found] ` <3mjc8c$630@crcnis3.unl.edu>
[not found] ` <D71Gs9.2FG@nntpa.cb.att.com>
[not found] ` <EACHUS.95Apr17162921@spectre.mitre.org>
[not found] ` <3n1als$ksi@no-names.nerdc.ufl.edu>
1995-04-19 0:00 ` Multiple dispatch (was Re: C++ not OOP?) Fernando Mato Mira
[not found] ` <1995Apr13.152104@di.epfl.ch>
1995-04-21 0:00 ` C++ not OOP? (Was: Language Efficiency James McKim
[not found] ` <3mgnkc$e3j@atlantis.utmb.edu>
[not found] ` <1995Apr13.180317.3308@rcmcon.com>
[not found] ` <3muaif$46u@atlantis.utmb.edu>
1995-04-21 0:00 ` Robert Martin
1995-04-21 0:00 ` Curtis Bass
1995-04-21 0:00 ` Robert Dewar
1995-04-22 0:00 ` Robert Martin
[not found] ` <3mk65q$1kti@watnews1.watson.ibm.com>
[not found] ` <3muavq$46u@atlantis.utmb.edu>
1995-04-21 0:00 ` Norman H. Cohen
1995-04-21 0:00 ` Curtis Bass
[not found] ` <MATT.95Apr17124932@physics10.berkeley.edu>
[not found] ` <3mujnl$4u8@atlantis.utmb.edu>
1995-04-20 0:00 ` ron house
1995-04-21 0:00 ` Robert Martin
1995-04-21 0:00 ` Curtis Bass
1995-04-21 0:00 ` Multiple dispatch (was Re: C++ not OOP?) Robert I. Eachus
1995-04-21 0:00 ` C++ not OOP? (Was: Language Efficiency Norman H. Cohen
1995-04-21 0:00 ` Fernando Mato Mira
1995-04-21 0:00 ` Erik Naggum
[not found] ` <dewar.797469506@gnat>
[not found] ` <1995Apr10.095958@di.epfl.ch>
[not found] ` <dewar.797513130@gnat>
[not found] ` <1995Apr10.165638@di.epfl.ch>
[not found] ` <D6yGqv.4BG@nntpa.cb.att.com>
1995-04-21 0:00 ` Fergus Henderson
1995-04-22 0:00 ` Kenneth Almquist
1995-04-20 0:00 ` Matt Austern
1995-04-21 0:00 ` Robert I. Eachus
1995-04-04 0:00 ` Bob Kitzberger
1995-04-05 0:00 ` Mike Wilson
1995-04-05 0:00 ` David Weller
1995-04-05 0:00 ` Larry Kilgallen
1995-04-05 0:00 ` Mitch Gart
1995-04-05 0:00 ` Lawrence Free/ A.F. Software Services
1995-04-06 0:00 ` Ken Leidner
1995-04-06 0:00 ` Larry Kilgallen
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox