Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #28668

Re: inline functions

From "BartC" <bc@freeuk.com>
Newsgroups comp.lang.c
References (2 earlier) <ON5ss.547483$9H4.97721@fx17.am4> <CfOdnaGneYfq2S7NnZ2dnUVZ8qWdnZ2d@lyse.net> <wMJss.415038$GX.256945@fx01.am4> <q-qdnajpsMhH8y7NnZ2dnUVZ7qidnZ2d@lyse.net> <eQKss.416451$GX.160924@fx01.am4>
Subject Re: inline functions
Message-ID <DLLss.354287$YJ1.149133@fx09.am4> (permalink)
Organization virginmedia.com
Date 2012-11-26 15:14 +0000

Show all headers | View raw


"BartC" <bc@freeuk.com> wrote in message
news:eQKss.416451$GX.160924@fx01.am4...

> So I will try and do something with those inlining attributes when I've
> finished development (at the moment it's just a distraction, so those
> functions are kept external. Then I will know if any increase/reduction is
> speed is do with my code, rather than a different inlining strategy coming
> into play).

I decided to try something with inlining now. With all my functions in the
same file as the dispatch code, but all with 'noline' attribute, the timings
are the same as when the functions are external:

Switch:         75 seconds
Label ptrs:     66 seconds

With all functions using 'always_inline', I get:

Switch:         60 seconds
Label ptrs:     48 seconds

About 37% increase in performance (27% decrease in execution time), using
label pointers (but a switch still needs to be considered, as label pointers
are not portable).

I was a bit worried because many functions are now called in several places
(some handlers are wrappers or stubs for others), but it seemed to work out.

(I'm quite impressed. When I first tried a C version of this project, it was
about 1/3 the speed of my last (experimental) interpreter, and 1/2 the speed
of my current production interpreter. That 48 seconds makes it faster than
that latter one!

There is also a way of getting better performance: to generate C source code 
instead, a series of function calls, to a modified set of handlers. Then it 
will be faster than either, but it will no longer be quite so dynamic then 
when it's hard-coded into the C program...)

-- 
Bartc 

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

inline functions "BartC" <bc@freeuk.com> - 2012-11-24 12:20 +0000
  Re: inline functions SG <sgesemann@gmail.invalid> - 2012-11-24 14:52 +0100
    Re: inline functions "BartC" <bc@freeuk.com> - 2012-11-24 14:48 +0000
      Re: inline functions Joost Kraaijeveld <J.Kraaijeveld@Askesis.nl> - 2012-11-24 15:59 +0100
      Re: inline functions Alain Ketterlin <alain@dpt-info.u-strasbg.fr> - 2012-11-24 16:25 +0100
      Re: inline functions Johann Klammer <klammerj@NOSPAM.a1.net> - 2012-11-24 19:18 +0100
  Re: inline functions Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-11-24 15:07 +0000
    Re: inline functions "BartC" <bc@freeuk.com> - 2012-11-24 15:33 +0000
      Re: inline functions Alain Ketterlin <alain@dpt-info.u-strasbg.fr> - 2012-11-24 17:17 +0100
        Re: inline functions "BartC" <bc@freeuk.com> - 2012-11-24 16:39 +0000
          Re: inline functions Alain Ketterlin <alain@dpt-info.u-strasbg.fr> - 2012-11-24 18:13 +0100
            Re: inline functions Jens Gustedt <jens.gustedt@loria.fr> - 2012-11-24 19:36 +0100
              Re: inline functions Sergio Durigan Junior <sergiodj@riseup.net> - 2012-12-05 03:19 -0200
                Re: inline functions Jens Gustedt <jens.gustedt@loria.fr> - 2012-12-05 10:57 +0100
                Re: inline functions Sergio Durigan Junior <sergiodj@riseup.net> - 2012-12-05 15:34 -0200
        Re: inline functions Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-11-25 09:43 +0000
          Re: inline functions Alain Ketterlin <alain@dpt-info.u-strasbg.fr> - 2012-11-25 11:32 +0100
            Re: inline functions Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-11-27 21:55 +0000
        Re: inline functions "christian.bau" <christian.bau@cbau.wanadoo.co.uk> - 2012-11-26 04:16 -0800
          Re: inline functions David Brown <david@westcontrol.removethisbit.com> - 2012-11-26 14:13 +0100
            Re: inline functions Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-11-28 21:27 +0000
              Re: inline functions James Kuyper <jameskuyper@verizon.net> - 2012-11-28 16:40 -0500
                Re: inline functions Ben Pfaff <blp@cs.stanford.edu> - 2012-11-28 14:15 -0800
                Re: inline functions Sergio Durigan Junior <sergiodj@riseup.net> - 2012-11-29 00:02 -0200
                Re: inline functions Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-11-29 07:24 -0800
                Re: inline functions James Kuyper <jameskuyper@verizon.net> - 2012-11-29 11:04 -0500
                Re: inline functions Sergio Durigan Junior <sergiodj@riseup.net> - 2012-11-29 14:44 -0200
                Re: inline functions Les Cargill <lcargill99@comcast.com> - 2012-11-29 12:44 -0600
                Re: inline functions Sergio Durigan Junior <sergiodj@riseup.net> - 2012-11-29 20:43 -0200
                Re: inline functions Les Cargill <lcargill99@comcast.com> - 2012-11-29 20:14 -0600
                Re: inline functions Ian Collins <ian-news@hotmail.com> - 2012-11-30 07:44 +1300
                Re: inline functions Sergio Durigan Junior <sergiodj@riseup.net> - 2012-11-29 20:38 -0200
                Re: inline functions Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-12-05 03:17 +0000
                Re: inline functions Noob <root@127.0.0.1> - 2012-12-05 11:26 +0100
      Re: inline functions David Brown <david@westcontrol.removethisbit.com> - 2012-11-26 11:23 +0100
        Re: inline functions "BartC" <bc@freeuk.com> - 2012-11-26 13:01 +0000
          Re: inline functions David Brown <david@westcontrol.removethisbit.com> - 2012-11-26 14:24 +0100
            Re: inline functions Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-11-26 05:35 -0800
              Re: inline functions Les Cargill <lcargill99@comcast.com> - 2012-11-26 07:57 -0600
                Re: inline functions Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-11-26 07:07 -0800
              Re: inline functions Rosario1903 <Rosario@invalid.invalid> - 2012-11-27 09:46 +0100
              Re: inline functions David Brown <david@westcontrol.removethisbit.com> - 2012-11-27 10:50 +0100
            Re: inline functions "BartC" <bc@freeuk.com> - 2012-11-26 14:14 +0000
              Re: inline functions "BartC" <bc@freeuk.com> - 2012-11-26 15:14 +0000
              Re: inline functions Rosario1903 <Rosario@invalid.invalid> - 2012-11-27 09:46 +0100
                Re: inline functions "BartC" <bc@freeuk.com> - 2012-11-27 14:41 +0000
              Re: inline functions David Brown <david@westcontrol.removethisbit.com> - 2012-11-27 11:01 +0100
                Re: inline functions "BartC" <bc@freeuk.com> - 2012-11-27 14:37 +0000
                Re: inline functions Alain Ketterlin <alain@dpt-info.u-strasbg.fr> - 2012-11-27 18:22 +0100
                Re: inline functions James Kuyper <jameskuyper@verizon.net> - 2012-11-27 12:55 -0500
                Re: inline functions Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-11-27 22:06 +0000
                Re: inline functions David Brown <david@westcontrol.removethisbit.com> - 2012-11-29 09:47 +0100
          Re: inline functions glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2012-11-26 14:39 +0000
  Re: inline functions Malcolm McLean <malcolm.mclean5@btinternet.com> - 2012-11-24 07:20 -0800
    Re: inline functions James Kuyper <jameskuyper@verizon.net> - 2012-11-24 10:44 -0500
  Re: inline functions James Kuyper <jameskuyper@verizon.net> - 2012-11-24 10:35 -0500
  Re: inline functions Philip Lantz <prl@canterey.us> - 2012-11-24 22:56 -0800
  Re: inline functions James Dow Allen <jdallen2000@yahoo.com> - 2012-11-25 01:18 -0800

csiph-web