Optimizadores de memoria y CPU: ¿son trucos?

Optimizadores de memoria y CPU: ¿son trucos?

Son herramientas de análisis que permiten utilizartodos los núcleos de tu CPUy también herramientas que te ayudan a recuperar la memoria (todavía no se me ocurre ninguna, pero he visto muchas). ¿Un truco? ¿Realmente funcionan estas herramientas?

Respuesta1

Manténgase alejado de los "optimizadores de memoria". No te ayudan. ¡Deje la gestión de la memoria al sistema operativo!

Esto enumera las razones por las cuales:http://www.t3chnophilia.com/2008/08/5-reasons-you-shouldnt-use-memory.html

Respuesta2

Optimizadores de memoria

Hubo un tiempo en el que los usuarios de DOS 386/486 tenían que optimizar manualmente sus archivos config.sys y autoexec.bat cuidadosamente para cargar la mayor cantidad de cosas "altas" (por encima de 640K) como fuera posible. Cargar lo incorrecto primero podría hacer que todo lo demás caiga en su precioso espacio de aplicación de 640K.

Luego vinieron los optimizadores de memoria que resolvieron esto automáticamente. Alcanzaron verdadera utilidad y madurez justo en el momento en que Windows 95 los dejó a todos obsoletos.

Optimizadores del sistema

Otras cosas que hacen los optimizadores de velocidad incluyen vaciar la papelera, desfragmentar el disco, limpiar el registro, eliminar registros de instalación antiguos, desinstalar controladores innecesarios y desinstalar fragmentos de programas antiguos.

Si limpian algo justo en el umbral, la mejora de la velocidad podría ser espectacular. Usualmente no.

Como puedes adivinar, puedes hacer todas estas cosas tú mismo sin gastar dinero.

Respuesta3

A juzgar por tu nombre de usuario, diría que eres un desarrollador de software como yo.

Si una aplicación no está escrita para aprovechar los subprocesos múltiples, una aplicación auxiliar no hará nada por usted.

Si está ejecutando una aplicación multiproceso y está escrita correctamente, los algoritmos de programación de subprocesos en Windows estarán bien. Programas como este están ahí para aprovecharse de las personas que no saben lo que sucede bajo el capó.

Casi todas las computadoras modernas tienen al menos dos procesadores, a los que generalmente se les llama “núcleos”.

Debería ser un claro indicio, ya que todos sabemos que un núcleo y un procesador son dos cosas diferentes.

Respuesta4

Soy desarrollador, así que responderé esta pregunta desde una perspectiva C/C++. Suponiendo que estoy escribiendo un programa GUI y no rompo los subprocesos de trabajo en ninguna parte, CreateThread()entonces es de un solo núcleo y nada de lo que pueda hacer ayudará. Si estoy usando CreateThread()y CreateProcess()entonces, como programador, puedo intentar establecer la afinidad. También puedo establecer prioridades de programación, aunque son aproximadas basadas en este tipo de descripciones: Baja, Normal, Alta, Por debajo de lo normal, Por encima de lo normal. Los niveles de subprocesos subyacentes reales son 1-16 (17-32 para el código de nivel de kernel), pero no puede asignarlos directamente, solo colocarlos en un contenedor según los cálculos del programador. No tengo más control que ese sobre cómo controlo mis hilos. Los aspectos internos de Windows Schedular no se conocen fuera de Microsoft, en parte porque Microsoft los cambia entre versiones de Windows para garantizar que se mantengan al tanto del uso del sistema y que todo funcione lo mejor posible.

La idea de que otra aplicación vaya a ayudar es ridícula, a menos que interrumpa mi proceso en todos los núcleos. Hacerlo sería muy difícil si no fuera a nivel del kernel y, de todos modos, podría dañar la aplicación. Intentar forzar al programador a hacer algo diferente también es un desperdicio de ciclos de CPU, ya que tienes que hacer un cálculo para acelerar las cosas y luego aplicarlo a tus subprocesos y procesos.

Finalmente, podrías hacer que tu sistema sea más inestable usando herramientas como estas. Los escáneres antivirus funcionan con baja prioridad por una razón, por ejemplo. Lea sobre el valor de amabilidad de un proceso en Linux (es el mismo concepto en Windows: básicamente, los procesos no se consideran buenos si acaparan recursos. En Linux, en realidad tienen menos tiempo para ese mal comportamiento. En Windows, simplemente acaparan recurso y ralentizar todo). Entonces, si bien el programa debería ser capaz de hacer frente a la situación, sus herramientas podrían dar a los procesos más prioridad de la que realmente desean, o menos cuando la necesitan.

Como han dicho otros, es mejor dejar esto en manos del sistema operativo.

información relacionada