I'm going to assume you're on CentOS 7+ or Ubuntu 15.04+ which both come with systemd. Systemd has some great tools for figuring out how long your system took to boot along with some visualizations to see why.
For the most basic output just run
systemd-analyze and you'll get a nice summary like so
Startup finished in 853ms (kernel) + 3min 50.610s (initrd) + 10.345s (userspace) = 4min 1.809s
That can tell you how much time your last boot took once systemd was started. That doesn't take into account BIOS/hardware initialization or GRUB timeouts but should be accurate for actual OS boot time.
If you want to figure out why the OS is taking so long try
systemd-analyze blame which will give you a chart of services from longest running to shortest. eg from my system
3min 49.219s systemd-cryptsetup@luks\x2d62611c1c\x2d74ab\x2d4be9\x2d8990\x2d41c0fd863b5a.service
Looks like 3 of the 4 minutes it takes to my boot my laptop is because I have an encrypted drive.
Finally You can see a chain of events that are considered "critical" to get the system booted. From the man page critical means "time-critical chain of units". This is because systemd parallelizes a lot of services. This will list the units that have to wait for another unit and how long it took to start.
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.
└─docker.service @4.900s +2.256s
└─wpa_supplicant.service @4.828s +14ms
└─docker.socket @3.741s +6ms
└─systemd-update-utmp.service @3.726s +10ms
└─auditd.service @3.713s +9ms
└─systemd-tmpfiles-setup.service @3.617s +82ms
└─fedora-import-state.service @3.568s +36ms
└─systemd-tmpfiles-setup-dev.service @301ms +80ms
└─kmod-static-nodes.service @268ms +10ms
You can also do some cool stuff by exporting your boot tree to a picture to email it or plot it with svg. See the man page for more details or this related question for a few more details.