Esto varía ampliamente entre arquitecturas. Probablemente no haya una regla de oro útil. La tecnología utilizada en las memorias de hoy generalmente proporciona el mismo tiempo de lectura y escritura. Esto definitivamente no es verdad históricamente y puede que no vuelva a serlo en el futuro. Por ejemplo, las memorias centrales son inherentemente más rápidas de escribir que de leer.
Las cosas se complican más cuando se utiliza la memoria caché. Hoy en día, probablemente pueda imaginar que la memoria caché tiene un tiempo de ciclo fijo, ya sea para leer o escribir. Sin embargo, las consideraciones a nivel del sistema cambian el costo general de una lectura o escritura.
En una lectura, parte de la memoria en algún lugar se debe leer físicamente y no se puede hacer nada hasta que se devuelva este resultado. Si los datos están en la memoria caché, puede estar disponible tan rápido como el procesador pueda utilizarlos. Si no está en el caché, entonces algo tiene que ensillar el burro, trotar hacia la memoria más distante y lenta, programar una lectura, esperar el resultado y regresar al procesador con los datos. Tenga en cuenta que puede haber múltiples niveles de caché con la latencia cada vez más larga para niveles más distantes. Si la memoria virtual está en uso (en realidad es solo otra forma de almacenamiento en caché) y los datos están actualmente intercambiados, entonces la lectura puede ser tan larga como el acceso a un disco (o cualquiera que sea su dispositivo de almacenamiento masivo).
Las escrituras tienen la ventaja de que la acción se puede iniciar, pero no es necesario esperar a que se complete. Sin embargo, esto agrega complejidad, por lo que no todos los sistemas funcionan de esta manera. Algo debe hacer un seguimiento de lo que realmente no se ha escrito en caso de que se presente una solicitud de lectura antes de que se complete el proceso de escritura. La lectura puede detenerse u obtener el valor de algún lugar parcialmente a través del proceso de escritura. Hay muchas oportunidades para aceleraciones aquí, pero tienen un costo de complejidad y hardware adicional. Por lo tanto, hay muchas implementaciones diferentes por ahí. Por ejemplo, una escritura siempre puede garantizar que la memoria caché de primer nivel se escriba antes de que finalice la operación o de que se realice una lectura. Pero entonces, ¿qué pasa si todo el caché ya está ocupado con diferentes direcciones? Esto puede requerir escribir una porción de caché en la memoria del siguiente nivel antes de completar la escritura en el caché de primer nivel. Una vez más, hay muchas compensaciones.
Las escrituras pueden aparecer más rápido inmediatamente porque el proceso puede superponerse con la ejecución posterior, pero en general pueden ser más costosas. Escribir nuevos datos en cualquier tipo de caché hace que esa sección del caché se marque como "sucia". Esto significa que debe escribirse en al menos el siguiente nivel de memoria más lenta antes de que pueda reutilizarse para almacenar en caché una parte diferente de la memoria conceptual global.
En general, no trataría de adivinar si las escrituras o las lecturas son más rápidas en una computadora moderna moderna de uso general, ya que podría haber una gran cantidad de caché sofisticado y de búsqueda previa y superpuesta. La respuesta no es determinista y puede depender de la duración de un bucle, de lo que está sucediendo y de cómo el código que le interesa esté alineado en la memoria.
Fahgeddaboudit.