Juan Manuel Ollé | 3 Jul 14:50 2015
Picon

Stack y cuando se crean los objetos

Estuve tratando de encontrar algo en el estandar referiado a como y cuando se crean los objetos locales en el stack y no pude encontrar nada al respecto asi que les pregunto

Esto es exactamente lo mismo?

void f(bool b){
      if(b) return;
      char arr[10000];
/* someting else */
}

a esto

void f(bool b){
      char arr[10000];
      if(b) return;
/* someting else */
}

que pasaria si en lugar de char fuese un tipo definido por el usuario?


--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Daniel Uranga | 1 Jul 18:58 2015
Picon

(unknown)

Consulta: ¿Alguien sabe si hay algún switch de compilador para g++ que
permita hacer lo mismo que poner "using namespace <algo>" en el
código?"

estilo "g++ -using-namespace pepe main.cpp -o app"

Saludos

-- 
--

-- 
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error. 
En caso de duda visita "http://groups.google.com/group/cppba"
--- 
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe <at> googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.

Carlos Bederián | 1 Jul 07:33 2015
Picon

Re: juego mental

ARM NEON si. PowerPC no. Usa el backend de LLVM para la mayoría de las arquitecturas (salvo para knights corner que usa icc afaik), así que si no soporta algo supongo que es por falta de interés.

No, no probé.

On Mon, Jun 29, 2015 at 7:05 PM Fernando Pelliccioni <fpelliccioni-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
Interesante, voy a ver si el compiler es free y hacer algunas pruebas. ¿Solo soporta Intel? ¿PowerPC y ARM?

¿Probaste SIMD de Nt2?


On Monday, June 29, 2015, Carlos Bederián <zzzoom-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
La variante de C que usa ISPC.

On Mon, Jun 29, 2015 at 5:33 PM Fernando Pelliccioni <fpelliccioni-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
2015-06-21 22:33 GMT-03:00 Carlos Bederián <zzzoom-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>:

Porque es lo que hace PCMPGTD en x86. No me fijé si vectoriza de la otra forma, llegué a probar el ejemplo original con #pragma simd de OpenMP 4 en gcc 4.9 y nada.

Bah, si es crítico usaría _mm_cmpgt_epi32 directamente, u otro lenguaje...


¿Qué lenguaje usarías?
 

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe <at> googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe <at> googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Re: juego mental

Salvo que vengan los que dicen que si escribís código que dependa de la aritmética en complemento a 2 no es portable......:-)



On 23/06/2015 14:58, Jorge Atala wrote:
ademas el -1 es independiente de la plataforma, poniendo ff te atas a una sola :)

El 23 de junio de 2015, 3:06, Carlos Bederián <zzzoom <at> gmail.com> escribió:
No Rafael, la idea es aplicar alguna transformación sin branches que devuelva 0 en caso de que sea menor a 127, y el mismo valor en caso contrario. Después si sumamos esos 0 no nos importa, no afectan el resultado.
Como a todos los elementos les aplicamos las mismas operaciones independientemente de sus valores, la expresión se puede vectorizar.

On Mon, Jun 22, 2015 at 5:13 AM RFOG Gmail <rafael.ontivero-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
LMQMP (La Madre Que Me Parió - Expresión castiza de España que podría sustituir a WTF).

¿Y la explicación Ubuntu (para humanos)? :-P

Bueno, en serio, tuve que Googlear pero creo (y solo creo) que lo entiendo. Al hacer la comparativa sobre números (registros) en lugar del indirecto del contenido del vector, se usa la instrucción, y como 0 & lo_que_sea es 0, el optimizador debería comerse esa parte.


El 22/6/2015, a las 3:33, Carlos Bederián <zzzoom-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> escribió:

Porque es lo que hace PCMPGTD en x86. No me fijé si vectoriza de la otra forma, llegué a probar el ejemplo original con #pragma simd de OpenMP 4 en gcc 4.9 y nada.

Bah, si es crítico usaría _mm_cmpgt_epi32 directamente, u otro lenguaje...


On Sun, Jun 21, 2015, 9:59 AM RFOG Gmail <rafael.ontivero-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
Una pregunta:

¿Por qué 

sum += (vector[c] >= 128 ? -1 : 0) & vector[c];


y no

sum += (vector[c] >= 128 ? vector[c]: 0);

?


 
El 20/6/2015, a las 6:49, Carlos Bederián <zzzoom-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> escribió:

Ah, no había leído lo de los flags. Para vectorizar uno querría calcular algo como:
sum += (vector[c] >= 128 ? -1 : 0) & vector[c];

Después rogamos que el compilador se percate, desenrolle en 4/8 y vectorice. Pero como no hay instrucción en SSE2 para comparación de packed unsigned int, todo es al pedo. Por eso decía de los ints, igual hay que ayudarlo bastante a gcc para que se entere.

On Fri, Jun 19, 2015 at 3:56 PM Jorge Atala <alanatala-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
tengo un haswell pero esta medido sobre un i7 920, creo que es viejito, debe ser un nehalem

El 19 de junio de 2015, 15:22, Carlos Bederián <zzzoom-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> escribió:
Idea: probá de nuevo pero con int en vez de unsigned int.

On Fri, Jun 19, 2015 at 3:06 PM Fernando Pelliccioni <fpelliccioni <at> gmail.com> wrote:
Llegue tarde, estaba pensando lo mismo, pero no pude escribirlo antes (estaba lavando los platos ;))

El branch prediction facilita tener el "pipeline siempre full" (hablando burdamente).
Me imagino que Jorge debe tener un Haswell o un Sandy Bridge, creo que tienen un pipeline de 8 o 9 instrucciones, en un rato lo reviso en el manual.
Lo del intercambio de los loops es raro que GCC no lo haga, quizas algun flag especial??
Ahora leo la respuesta de SO.


2015-06-19 14:49 GMT-03:00 'Carlos Cattaneo' via CyC++ Buenos Aires <cppba-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>:
Sinceramente no conozco mucho sobre las instrucciones vectoriales.
Aunque me atrevo a hacer una pregunta de curioso:
Por qué hace falta que el vector esté ordenado si la operación "suma" es asociativa ?

Por otro lado se me hace difícil creer que el compilador asuma algo sobre el estado de una estructura de datos por el hecho de haber llamado a una función de una biblioteca (std::sort), aún cuando sea de la biblioteca standard.






On 19/06/2015 14:26, Nicolás Brailovsky wrote:
Mi pregunta viene porque la diferencia parece demasiado grande como para ser solamente branch prediction, y el vectorizador esta bastante inteligente estos dias. Si gcc puede deducir que el vector esta ordenado tranquilamente puede vectorizar esa operacion.

Nicolás Brailovsky


2015-06-19 19:11 GMT+02:00 'Carlos Cattaneo' via CyC++ Buenos Aires <cppba-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>:
Me imagino que es porque en el segundo caso el "branch prediction" casi siempre "acierta" (salvo un caso) ya que con el vector ordenado primero vienen los elementos menores que 128 y luego los mayores. Es decir, la condición del "if" está algunas veces en false al principio y luego todo el resto de las veces en true.




On 19/06/2015 13:11, Nicolás Brailovsky wrote:
Interesante. No tengo a mano un compilador para probar asi que pregunto: Flags de compilacion? Cambia la relacion entre f1 y f2 al desactivar optimizaciones? Y si desactivamos vectorizacion?



Nicolás Brailovsky


2015-06-19 15:18 GMT+02:00 Jorge Atala <alanatala-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>:
Buenas gente, mando algo para que charlemos un rato:

Supongan que la siguiente funcion recibe un vector de enteros aleatorios, y digamos que este vector tiene un 1<<15 elementos:

unsigned int function1(const std::vector<unsigned int>& vector) { unsigned int sum = 0; for (unsigned int i = 0; i < 100000; ++i) { for (unsigned c = 0; c < vector.size(); ++c) { if (vector[c] >= 128) sum += vector[c]; } } return sum; }


Y supongamos que a esa funcion le agrego un sort:

unsigned int function2(std::vector<unsigned int>& vector) { unsigned int sum = 0; std::sort(vector.begin(), vector.end()); for (unsigned int i = 0; i < 100000; ++i) { for (unsigned c = 0; c < vector.size(); ++c) { if (vector[c] >= 128) sum += vector[c]; } } return sum; }

La primera pregunta es: Cual de las dos funciones es mas performante en cuestion de tiempo?

Despues de pensar la pregunta, se puede pasar a la segunda, que incluye la respuesta, por eso esta mas abajo:








































Solucion:

en un core I7 920 <at> 3.5GHz:

function1 : 11.777 segundos
function2 : 2.352 segundos

Segunda pregunta: Porque ? :)

Saludos!


Jorge



--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.


--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.


--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.


--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.


--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe <at> googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe <at> googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe <at> googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

dgutson . | 21 Jun 05:45 2015
Picon

Chivo. Curso c++

Sres.

Disculpen que utilice este foro para ésto. Voy a dar un curso de C y C++ en Córdoba en Julio. Interesados x favor completen el formulario pero no respondan este mail para no crear más spam.
Asimismo agradezco difusión.
El cupo es de 10 personas.

Gracias,

    Daniel.

---------- Mensaje reenviado ----------
De: <danielgutson-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Fecha: 21/6/2015 0:39
Asunto: Curso c++
Para: <Danielgutson-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc:

If you have trouble viewing or submitting this form, you can fill it out in Google Forms.

Curso c++

* Required
Powered by
This content is neither created nor endorsed by Google.
Report Abuse - Terms of Service - Additional Terms

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Jorge Atala | 19 Jun 20:04 2015
Picon

Re: juego mental

No se que tan agresiva sea la optimizacion de vectorizacion, pero en este caso no creo que aplicarla sea una buena idea, ya que hay dependencias, la cuestion es evitar el branch, como dije recien

El 19 de junio de 2015, 15:01, Fernando Pelliccioni <fpelliccioni-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> escribió:
Salvo que esté omitiendo algo, la vectorizacion es igual si el array (std::vector) esta ordenado o no.

2015-06-19 14:26 GMT-03:00 Nicolás Brailovsky <nicolasbrailo-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>:
Mi pregunta viene porque la diferencia parece demasiado grande como para ser solamente branch prediction, y el vectorizador esta bastante inteligente estos dias. Si gcc puede deducir que el vector esta ordenado tranquilamente puede vectorizar esa operacion.

Nicolás Brailovsky


2015-06-19 19:11 GMT+02:00 'Carlos Cattaneo' via CyC++ Buenos Aires <cppba <at> googlegroups.com>:
Me imagino que es porque en el segundo caso el "branch prediction" casi siempre "acierta" (salvo un caso) ya que con el vector ordenado primero vienen los elementos menores que 128 y luego los mayores. Es decir, la condición del "if" está algunas veces en false al principio y luego todo el resto de las veces en true.




On 19/06/2015 13:11, Nicolás Brailovsky wrote:
Interesante. No tengo a mano un compilador para probar asi que pregunto: Flags de compilacion? Cambia la relacion entre f1 y f2 al desactivar optimizaciones? Y si desactivamos vectorizacion?



Nicolás Brailovsky


2015-06-19 15:18 GMT+02:00 Jorge Atala <alanatala-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>:
Buenas gente, mando algo para que charlemos un rato:

Supongan que la siguiente funcion recibe un vector de enteros aleatorios, y digamos que este vector tiene un 1<<15 elementos:

unsigned int function1(const std::vector<unsigned int>& vector) { unsigned int sum = 0; for (unsigned int i = 0; i < 100000; ++i) { for (unsigned c = 0; c < vector.size(); ++c) { if (vector[c] >= 128) sum += vector[c]; } } return sum; }


Y supongamos que a esa funcion le agrego un sort:

unsigned int function2(std::vector<unsigned int>& vector) { unsigned int sum = 0; std::sort(vector.begin(), vector.end()); for (unsigned int i = 0; i < 100000; ++i) { for (unsigned c = 0; c < vector.size(); ++c) { if (vector[c] >= 128) sum += vector[c]; } } return sum; }

La primera pregunta es: Cual de las dos funciones es mas performante en cuestion de tiempo?

Despues de pensar la pregunta, se puede pasar a la segunda, que incluye la respuesta, por eso esta mas abajo:








































Solucion:

en un core I7 920 <at> 3.5GHz:

function1 : 11.777 segundos
function2 : 2.352 segundos

Segunda pregunta: Porque ? :)

Saludos!


Jorge



--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe <at> googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Jorge Atala | 19 Jun 15:18 2015
Picon

juego mental

Buenas gente, mando algo para que charlemos un rato:

Supongan que la siguiente funcion recibe un vector de enteros aleatorios, y digamos que este vector tiene un 1<<15 elementos:

unsigned int function1(const std::vector<unsigned int>& vector) { unsigned int sum = 0; for (unsigned int i = 0; i < 100000; ++i) { for (unsigned c = 0; c < vector.size(); ++c) { if (vector[c] >= 128) sum += vector[c]; } } return sum; }


Y supongamos que a esa funcion le agrego un sort:

unsigned int function2(std::vector<unsigned int>& vector) { unsigned int sum = 0; std::sort(vector.begin(), vector.end()); for (unsigned int i = 0; i < 100000; ++i) { for (unsigned c = 0; c < vector.size(); ++c) { if (vector[c] >= 128) sum += vector[c]; } } return sum; }

La primera pregunta es: Cual de las dos funciones es mas performante en cuestion de tiempo?

Despues de pensar la pregunta, se puede pasar a la segunda, que incluye la respuesta, por eso esta mas abajo:








































Solucion:

en un core I7 920 <at> 3.5GHz:

function1 : 11.777 segundos
function2 : 2.352 segundos

Segunda pregunta: Porque ? :)

Saludos!


Jorge



--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
dgutson . | 6 Jun 00:22 2015
Picon

HTTP?

Compila si metemos una dirección http en un fuente c++ ? (empezando en
http.., no desde www.)

-- 
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

-- 
--

-- 
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error. 
En caso de duda visita "http://groups.google.com/group/cppba"
--- 
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe <at> googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/d/optout.

Fernando Cacciola | 27 May 01:53 2015
Picon

Re: A falta de un mejor adjetivo.. esto es Refrescante.



2015-05-26 20:37 GMT-03:00 Angel Bustamante <angel.bus-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>:

Creo que lo mejor del post son los comentarios.


Absolutamente!

Como por ejemplo, el que pregunta si el nuevo feature también funciona para i, j y k ;)
 

Gracias!

sent from my mind

On May 26, 2015 8:14 PM, "Fernando Cacciola" <fernando.cacciola-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Fernando Cacciola
SciSoft Consulting, Founder
http://www.scisoft-consulting.com

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Fernando Cacciola | 27 May 01:14 2015
Picon

A falta de un mejor adjetivo.. esto es Refrescante.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Diego Padula | 22 May 15:22 2015
Picon

Consulta sobre fuentes de librerias

Hola, queria hacer una consulta que en realidad es trivial pero a veces con tanta informacion en la web es dificil encontrar LA informacion correcta. Sobre todo habiendo tanto foro de gente taringuera y stackoverflowera.

Si yo tuviera que buscar como esta construida por dentro alguna funcion como por ejemplo strlen() de C o alguna otra cualquiera de C++, donde deberia buscar especificamente?

Mas aun, si yo quiero conocer cual es la implementacion de strlen() o strcpy() que estoy utilizando en mi programa cuando incluyo <string.h>, hay algun lugar donde se pueda cantar Eureka!?

Saludos y gracias
Diego

--
______________________________

Tel. (0342) 4505506
Tel. (0342) 156148474

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Gmane