[Bf-committers] Performance Patch for Blender

Ton Roosendaal ton at blender.org
Mon Jul 18 22:49:22 CEST 2005


Hi Thomas,

Thanks for pointing to this issue. :)
It indeed looks like a horrible piece of code... not sure what the  
original intention was of it, most likely it was added quick to get  
something work.

As part of the animation-recode project, I was planning to re-assemble  
the full action and nla editors as well. I'll keep your patch on my  
checklist, but will do first work to get the big picture right.

ALso note that the Ipo "space data" stores ipo-curve editing  
information, something this piece of code probably tried to get  
working... will review that as well.

-Ton-


On 18 Jul, 2005, at 16:28, Thomas H. Hendrick wrote:

>
> Hey.  Love the program, outstanding work, etc, etc.
>
> I'm new to the Blender code, but I was noticing serious slowdown
> problems with 2.36, 2.37, and 2.37a when I was deleting an action strip
> from an armature.  Using my profiler and some other tools, I think I  
> may
> have found something which will speed things up (if I understand this
> section of code at all).
>
> Attached please find a small patchfile for one file
> (source/blender/src/space.c).
>
> If I read the code correctly:
>
> for each Screen of G.main
>    for each ScrArea of Screen.areabase
>      for each SpaceLink of ScrArea.spacedata
>        if event is REMAKEALLIPO
>          for each ipo in G.main->ipo
>            for each curve in ipo->curve
>              testhandles_ipocurve
>
> However, as far as I know, IPO Data blocks are not related to Screens,
> ScrAreas, or SpaceLinks.  So, each time you go through this process,
> you're going to be recalculating the same IPO Data, and getting the  
> same
> result.  At least, I think so.
>
>
>
> --  
> ----------------------------------------------------------------------- 
> -
> Tom Hendrick<thomas.hendrick at vistagy.com>                Technical  
> Staff
> [W] 1-(781)-290-0506 x252   [M] 1-(617) 448-2585    [H]  
> 1-(978)-244-1149
> Vistagy, Inc.                                     
> http://www.vistagy.com/
> Index: source/blender/src/space.c
> ===================================================================
> RCS file: /cvsroot/bf-blender/blender/source/blender/src/space.c,v
> retrieving revision 1.266
> diff -B -w -u -r1.266 space.c
> --- source/blender/src/space.c	11 Jun 2005 16:30:36 -0000	1.266
> +++ source/blender/src/space.c	8 Jul 2005 18:31:42 -0000
> @@ -4780,27 +4780,32 @@
>  {
>  	bScreen *sc;
>
> -	sc= G.main->screen.first;
> -	while(sc) {
> -		ScrArea *sa= sc->areabase.first;
> -		while(sa) {
> -			SpaceLink *sl= sa->spacedata.first;
> -			while(sl) {
> -				switch(event) {
> -				case REMAKEALLIPO:
> -					{
> +  /* -------------------------------------------------------
> +   * Since IPOs are not relative or related to Screens, Screen Areas,  
> or
> +   * SpaceLinks, recalculating all of the IPOs for every screen,  
> screen
> +   * area, and space link is really unnecessary, isn't it?
> +   * ------------------------------------------------------- */
> +  if( REMAKEALLIPO == event ){
>  						Ipo *ipo;
>  						IpoCurve *icu;
>  						
>  						/* Go to each ipo */
>  						for (ipo=G.main->ipo.first; ipo; ipo=ipo->id.next){
> +      /* fprintf( stderr, "Beginning recalc of ipo : %s\n",  
> ipo->id.name ); */
>  							for (icu = ipo->curve.first; icu; icu=icu->next){
>  								sort_time_ipocurve(icu);
>  								testhandles_ipocurve(icu);
>  							}
>  						}
>  					}
> -					break;
> +  else{
> +    sc= G.main->screen.first;
> +    while(sc) {
> +      ScrArea *sa= sc->areabase.first;
> +      while(sa) {
> +        SpaceLink *sl= sa->spacedata.first;
> +        while(sl) {
> +          switch(event) {
>  				case REMAKEIPO:
>  					if(sl->spacetype==SPACE_IPO) {
>  						SpaceIpo *si= (SpaceIpo *)sl;
> @@ -4826,6 +4831,7 @@
>  		}
>  		sc= sc->id.next;
>  	}
> +  }
>  }
>
>  /* if header==1, then draw header for curarea too. Excepption for  
> headerprint()... */
>
> <thomas.hendrick.vcf>_______________________________________________
> Bf-committers mailing list
> Bf-committers at projects.blender.org
> http://projects.blender.org/mailman/listinfo/bf-committers
>
------------------------------------------------------------------------ 
--
Ton Roosendaal  Blender Foundation ton at blender.org  
http://www.blender.org



More information about the Bf-committers mailing list