Biblioteca de clases genéricas - errores, descripción, preguntas, características de uso y sugerencias - página 17
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¡Un gran ejemplo teórico! En la práctica, ¿alguien ha operado alguna vez miles de transacciones?
p.d. no estoy tratando de demostrar que es una mierda y que nadie lo necesita. Estoy tratando de entender el valor para el comercio real. No soy un teórico en general, sino un puro practicante.
Brevemente sobre la implementación actual deCHashMap:
En primer lugar, vamos a averiguar qué esEntry<TKey,TValue>.
Esencialmente es un Nodo como en CLinkedList que contiene:
m_entries[] - matriz de "celdas" donde se colocan la clave y el valor añadidos, hash_code, next. El tamaño de la matriz corresponde a la Capacidad.
m_count - especifica el índice de la primera celda no utilizada en m_entries. El valor inicial es 0, creciendo hasta la Capacidad, lo siguiente es reconstruir todas las matrices con el aumento de la Capacidad y el tamaño de todas las matrices.
m_buckets[] - matriz de índices en m_entries[]. El valor por defecto es -1. El tamaño de la matriz corresponde a la capacidad.
Sin colisión, añadiendo un valor único al contenedorCHashMap:
Sin colisiones, obtener el valor por clave en el contenedorCHashMap:
Resolución de colisiones:
Colisión, obtener el valor por clave en el contenedorCHashMap:
Eliminación de un valor del contenedorCHashMap:
Reconstruir la tabla hash (proceso para aumentar la capacidad) :
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Biblioteca de clases genéricas - errores, descripción, preguntas, uso y sugerencias
Sergey Dzyublik, 2017.12.09 01:12
Me familiaricé con la implementación deCHashMap
Honestamente, me gustó.
Hay varias sugerencias de posibles mejoras:
1) En mi humilde opinión, la implementación contiene una selección no del todo correcta de la capacidad - tanto del tamaño inicial 3 como de los posteriores al reconstruir la tabla hash.
Sí, es correcto que se elija un número primo para la uniformidad de la distribución.
Sin embargo, la implementación de CPrimeGenerator no cumple con las expectativas y contiene omisiones de números primos.
El objetivo de este "generador" es claro: proporcionar un factor de incremento del orden de 1,2 con la generación automática de números primos.
Sin embargo, ¿no es un coeficiente demasiado pequeño? En C++, para los vectores, el coeficiente suele ser de 1,5-2,0, dependiendo de la biblioteca (ya que afecta mucho a la complejidad media de la operación).
La salida podría ser un coeficiente constante seguido del redondeo del número a primo mediante una búsqueda binaria de una lista de números primos.
Y un tamaño inicial de 3 es demasiado pequeño, no vivimos en el siglo pasado.
2) Actualmente la tabla hash se reconstruye (Resize) sólo cuando la capacidad está llena al 100% (todas las m_entradas[] están llenas).
Debido a esto, puede haber muchas colisiones para las claves que no están distribuidas de manera muy uniforme.
Como opción, considere la posibilidad de introducir un factor de llenado que reduzca el 100% en el límite necesario para realizar una reconstrucción de la tabla hash.
En la práctica, ¿alguien ha operado alguna vez con miles de transacciones?
Sí, millones de llamadas de historia en una pasada son practicadas por muchos.
En los fuertes cada primero.
Está claro.
Enviar órdenes por el algoritmo hft y recogerlas para analizarlas son cosas diferentes. Estos hashes no son necesarios para el envío, y tampoco lo son para el análisis, ya que se analizan de forma diferente.
Así que, no te ofendas. También se necesita la teoría.
Está claro.
Enviar órdenes por el algoritmo hft y recogerlas después para analizarlas son cosas diferentes. No necesitas estos hashtags para el envío, y tampoco los necesitas para el análisis, porque eso no es lo que se está analizando.
Así que, no te ofendas. También necesitamos la teoría.
No uso el lavavajillas, uso la esponja.
Sin ánimo de ofender. Los lavavajillas son patéticos, para qué sirven.
Está claro.
Enviar órdenes por el algoritmo hft y elevarlas posteriormente para su análisis son cosas diferentes. No necesitas estos hashtags para enviarlos y no los necesitas para el análisis ya que analizamos algo más después.
Así que, no te ofendas. También necesitamos la teoría.
¿Qué rencores? Sigue escribiendo tus muletillas.
Breve descripción de la implementación actual deCHashMap
Gracias, lo utilizaré cuando analice el código fuente.
¿Qué rencores? Sigue escribiendo tus muletillas.
Gracias, lo usaré cuando analice las fuentes.
Se ha omitido la comprobación de la existencia de la clave en el contenedor al añadir un nuevo par clave-valor, ejecutado en primer lugar.
Pero no es importante.
Por favor, arreglen algo así en todo el genérico.