Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Speeding code

Author: Heiner Marxen

Date: 07:03:46 05/13/03

Go up one level in this thread


On May 13, 2003 at 04:54:58, Tom Kerrigan wrote:

>On May 12, 2003 at 14:49:21, Dieter Buerssner wrote:
>
>>On May 12, 2003 at 14:43:00, Tom Kerrigan wrote:
>>
>>>On May 12, 2003 at 10:38:57, Fermin Serrano wrote:
>>>>	Question 3:
>>>>	-----------------
>>>>	To copy a structure into other, what is faster, doing by copy each of his
>>>>elements or use a memcpy?
>>>
>>>Use memcpy. It may not be faster on your system, but it's optimized on other
>>>systems that you might use later. If you copy individual elements yourself,
>>>there's no chance it will be optimized on any system.
>>
>>I don't agree. Use the assignment operator ("=")! It should never do worse than
>>memcpy or copying individual members. On many compilers, it will make no

I second that.

>You're probably right, assuming your compiler supports copying structures. I
>recall that some don't, but I imagine most current ones do.

IIRC, ANSI-C requires structure assignments.
I haven't met a C compiler without struct assignments for many years, now,
and I've never seen an ANSI compliant one without it.

Hence: if you want to copy a structure, assign it.

There is only one possible pitfall with this, I'm aware of:
if you later want to compare two structs with "memcmp" instead of
component by component, you also compare the "alignment gaps" of the
structures (if there are any).  And the assignment _may_ omit copying the
gaps (copying component by component).
That may result in "unequal" results of memcmp(), although all components
are equal.

[Yes, that one has bitten me.]

>-Tom

Cheers,
Heiner



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.