char vs int speed

Discussion in 'C Programming' started by dondora, Nov 29, 2007.

  1. dondora

    dondora Guest

    hello~!

    I'm coding a simple program which demands fast speed.
    and my cpu is 32bits.
    which one is faster in processing array and loop? char? int?
     
    dondora, Nov 29, 2007
    #1
    1. Advertising

  2. karthikbalaguru, Nov 29, 2007
    #2
    1. Advertising

  3. dondora

    santosh Guest

    dondora wrote:

    > hello~!
    >
    > I'm coding a simple program which demands fast speed.
    > and my cpu is 32bits.
    > which one is faster in processing array and loop? char? int?


    This is the wrong group for such questions. Code performance is
    intimately tied to compiler specific optimisations, hardware
    capabilities and many other details. The C Standard says nothing about
    the performance of C code.

    <OT>
    On a 32 bit system, it is very likely single operations on int are more
    faster than on char. However for a very large array of such objects,
    the memory saved by using char could very easily outweigh the fact that
    native instructions on int are faster. All that the C Standard says is
    that the type int is most likely to correspond to the native "word
    size" of the underlying processor, hence it is most likely that (given
    that other factors are equal), operations on it are faster than on a
    char.

    The only truly conclusive method to evaluate performance is to actually
    test the code.
    </OT>
     
    santosh, Nov 29, 2007
    #3
  4. dondora

    Chris Dollin Guest

    dondora wrote:

    > I'm coding a simple program which demands fast speed.
    > and my cpu is 32bits.
    > which one is faster in processing array and loop? char? int?


    It Depends.

    If it's important to you, measure it. Remember that the results will
    depend on your implementation and won't necessarily scale linearly
    with the size of your input.

    Standard C makes no promises about performance. If you tell us what
    you're trying to do, we might be able to spot obvious gotchas or
    suggest useful measurements.

    --
    Chris "everything is context, even when it isn't" Dollin

    Hewlett-Packard Limited registered office: Cain Road, Bracknell,
    registered no: 690597 England Berks RG12 1HN
     
    Chris Dollin, Nov 29, 2007
    #4
  5. On Nov 29, 9:50 am, dondora <> wrote:
    > hello~!
    >
    > I'm coding a simple program which demands fast speed.
    > and my cpu is 32bits.
    > which one is faster in processing array and loop? char? int?


    Go to www.intel.com and download their processor manuals, then read
    through them. They are free. Or go to www.amd.com and download their
    manuals. They will even send them to you on a CD, for free. Then have
    a look at www.ibm.com so you can get a set of PowerPC manuals. This
    should give you some understanding of the matter, and some idea why
    there is no one answer.

    Alternative answer: Try both and measure the difference in speed. If
    you can't measure a difference, then it doesn't matter. If you can
    measure a difference, take the faster.
     
    christian.bau, Nov 29, 2007
    #5
  6. In article <>,
    christian.bau <> wrote:
    >On Nov 29, 9:50 am, dondora <> wrote:


    >> I'm coding a simple program which demands fast speed.
    >> and my cpu is 32bits.
    >> which one is faster in processing array and loop? char? int?


    >Alternative answer: Try both and measure the difference in speed. If
    >you can't measure a difference, then it doesn't matter. If you can
    >measure a difference, take the faster.


    Though be sure to measure in a truly representative code sample.
    For example, your program, coded using char, might happen to have
    all of the most-needed data fit into the CPU data cache, but the
    same program coded using int might happen to not fit the same data
    completely into the CPU data cache. For some data access patterns
    the difference would be quite noticable; for other data access
    patterns, the difference would be minor. (And if you are working
    at this level, then "cache-line aliasing" can make a huge difference.)

    --
    "Any sufficiently advanced bug is indistinguishable from a feature."
    -- Rich Kulawiec
     
    Walter Roberson, Nov 29, 2007
    #6
  7. dondora:

    > hello~!
    >
    > I'm coding a simple program which demands fast speed. and my cpu is
    > 32bits.
    > which one is faster in processing array and loop? char? int?



    Only resort to theory if there's no practical means of experiment.

    #include <stdio.h>

    typedef unsigned Type;
    #define SPECIF "%u"

    int main(void)
    {
    unsigned i;

    Type obj;

    scanf(SPECIF,&obj);

    /* Print the time */

    for(i = 0; i != 65000u; ++i) obj *= obj;

    /* Print the time again */

    return 0;
    }

    Then try it with an unsigned char.


    A rule of thumb though...

    If you're dealing with a CPU which is 16-Bit or greater, than int is
    likely to be faster than char. Otherwise, char is likely to be faster
    than int.

    You might be wise to go with types such as "int_fastest_atleast_8" (I
    don't know if that's its exact name).

    --
    Tomás Ó hÉilidhe
     
    Tomás Ó hÉilidhe, Nov 29, 2007
    #7
  8. dondora

    Guest

    Tomás Ó hÉilidhe wrote:
    ...
    > You might be wise to go with types such as "int_fastest_atleast_8" (I
    > don't know if that's its exact name).


    There's an int_fast8_t which is the fastest type with at least 8 bits,
    and there's int_least8_t, which is the smallest type with at least 8
    bits.
     
    , Nov 29, 2007
    #8
  9. dondora

    Ben Pfaff Guest

    Tomás Ó hÉilidhe <> writes:

    > dondora:
    >> I'm coding a simple program which demands fast speed. and my cpu is
    >> 32bits.
    >> which one is faster in processing array and loop? char? int?

    >
    > Only resort to theory if there's no practical means of experiment.


    For benchmarking, that often makes sense. But I hope that you
    don't apply this as a general principle to everything in C,
    because the C language has many areas of undefined and
    implementation-defined behavior. If you depend on the results of
    experiments, then you can unwittingly stray into one of these
    area and make your software unnecessarily unportable.
    --
    Ben Pfaff
    http://benpfaff.org
     
    Ben Pfaff, Nov 29, 2007
    #9
  10. writes:
    > Tomás Ó hÉilidhe wrote:
    > ...
    >> You might be wise to go with types such as "int_fastest_atleast_8" (I
    >> don't know if that's its exact name).

    >
    > There's an int_fast8_t which is the fastest type with at least 8 bits,
    > and there's int_least8_t, which is the smallest type with at least 8
    > bits.


    Both of which are defined in <stdint.h>, which is a new header in C99.
    Not all implementations provide it.

    int_least8_t is pretty much guaranteed to be signed char, or perhaps
    plain char if plain char is signed. (It *might* be something else in
    an implementation that provides extended integer types, but there's no
    point in making it anything other than signed char or char.)

    int_fast8_t will probably be either the same as int_least8_t, or
    signed int. (I'm a little surprised to find that int_fast8_t is 8
    bits under gcc on an x86 system.) But if you want fast computations
    and you don't have <stdint.h>, int is likely to be your best bet.

    --
    Keith Thompson (The_Other_Keith) <>
    Looking for software development work in the San Diego area.
    "We must do something. This is something. Therefore, we must do this."
    -- Antony Jay and Jonathan Lynn, "Yes Minister"
     
    Keith Thompson, Nov 29, 2007
    #10
  11. dondora

    Jack Klein Guest

    On Thu, 29 Nov 2007 01:50:01 -0800 (PST), dondora
    <> wrote in comp.lang.c:

    > hello~!
    >
    > I'm coding a simple program which demands fast speed.


    How does it demand fast speed? In wring, on the phone, in an email?
    What is your definition of "fast speed"?

    > and my cpu is 32bits.
    > which one is faster in processing array and loop? char? int?


    Each is faster than the other.

    --
    Jack Klein
    Home: http://JK-Technology.Com
    FAQs for
    comp.lang.c http://c-faq.com/
    comp.lang.c++ http://www.parashift.com/c -faq-lite/
    alt.comp.lang.learn.c-c++
    http://www.club.cc.cmu.edu/~ajo/docs/FAQ-acllc.html
     
    Jack Klein, Nov 30, 2007
    #11
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Schnoffos
    Replies:
    2
    Views:
    1,219
    Martien Verbruggen
    Jun 27, 2003
  2. trey

    newbie: char* int and char *int

    trey, Sep 10, 2003, in forum: C Programming
    Replies:
    7
    Views:
    405
    Irrwahn Grausewitz
    Sep 10, 2003
  3. Hal Styli
    Replies:
    14
    Views:
    1,646
    Old Wolf
    Jan 20, 2004
  4. lovecreatesbeauty
    Replies:
    1
    Views:
    1,057
    Ian Collins
    May 9, 2006
  5. gert
    Replies:
    20
    Views:
    1,167
Loading...

Share This Page