﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc
1569	Uso de Group y BinGroup	Pedro Gea	Víctor de Buen Remiro	"El tique se abre con una intención más informativa que otra cosa.

Se constata que el uso de {{{BinGroup}}} y un determinado operador en el cuerpo de algunas funciones las hace mucho más ineficientes que si se usáramos la variante {{{Group}}} con la función correspondiente.

Por ejemplo, dado un conjunto grande de matrices:
{{{
#!java
Set matrices = For(1, 1000, Matrix (Real i) {
  Rand(200, 1, 0, 1)
});
}}}

Si deseamos concatenarlas por columnas, podemos hacer:
{{{
#!java
Real t1 = Copy(Time);
Matrix BinGroup(""|"", matrices);
Real t2 = Copy(Time);
Real t21 = t2 - t1; // ~ 2.8 s
}}}
que invierte unos segundos, o esta otra variante:
{{{
#!java
Real t3 = Copy(Time);
Matrix Group(""ConcatColumns"", matrices);
Real t4 = Copy(Time);
Real t43 = t4 - t3; // ~ 0 s
}}}
que invierte un tiempo despreciable.

Entiendo que la ""ineficiencia"" de {{{BinGroup}}} es debido a llamadas de dos en dos:
{{{
#!java
Matrix (...((m1 | m2) | m3) | m4) | ... | mN)
}}}
en lugar de una única llamada conjunta:
{{{
#!java
Matrix ConcatColumns(m1, m2, m3, m4, ..., mN);
}}}"	trick	closed	normal	Mantainance	Kernel	3.1	normal	goodtrick		
