Estoy escribiendo una cosa de estilo de base de datos en C (es decir, almacenará y operará en aproximadamente 500,000 registros). Voy a ejecutarlo en un entorno con limitaciones de memoria (VPS), por lo que no quiero que el uso de la memoria se agote. No voy a manejar grandes cantidades de datos, tal vez hasta 200MB en total, pero quiero que la huella de memoria permanezca en la región de 30 MB (sacando estos números del aire).¿Debo gestionar páginas o simplemente apoyarme en la memoria virtual?
Mi instinto es hacer mi propio manejo de página (las bases de datos reales lo hacen), pero he recibido consejos que dicen que debería asignarlo todo y permitir que el sistema operativo haga la paginación de VM para mí. Mis números nunca subirán por encima de este orden de magnitud. ¿Cuál es la mejor opción en este caso?
Asumiendo la segunda opción, ¿en qué punto sería sensato que un programa haga su propia búsqueda? Obviamente RDBMsses que pueden manejar gigabytes debe hacer esto, pero debe haber un punto a lo largo de la escala en el que vale la pena preguntar.
Gracias!
única respuesta razonable. "La optimización prematura es la raíz de todo mal". –
A todo el mundo le gusta esa línea. Aquí tiendo a estar de acuerdo con @Matt Joiner, pero hay un momento para comenzar con su propia búsqueda. Si él sabe que iba a trabajar con grandes conjuntos de datos, entonces realmente podría tener sentido comenzar con la búsqueda en lugar de perder el tiempo en una solución ingenua. – BobbyShaftoe
Nahhh, no hay garantía de que su primera "implementación" sea incluso más rápida que la "predeterminada". Es mejor que comience desde abajo, que puede ser la parte superior, o la mayor parte de lo que ya sabe, hasta que comience a perfilar y ajustar desde una solución funcional. Sin embargo, tenga en cuenta que no hay absolutamente ninguna buena razón para no poder diseñarlo cuidadosamente, teniendo en cuenta el rendimiento y las optimizaciones algorítmicas desde el primer momento. Pero no dejaría que incurra en un costo de tiempo de desarrollo hasta que una solución de trabajo pueda proporcionar un control para las comparaciones. –