Warningplease backup the files/ROM before you perform any tweak on rooted phone
_________________________________________________________________________________________------ Uninstall any other launcher specially modified or leaked such as Google pixel launcher ---------
________________________________________________________________________________________

Keep brightness less then 40% or max 50%
Using greenify will help you as well

2. Editing Build.prop
add below lines in you root/system/build.prop file with the help of root explorer or any other root browser

#Dalvik optimization
dalvik.vm.dexopt-data-only=1
dalvik.vm.heapgrowthlimit=384m (there are 2 entries of this kindly remove/comment one and edit another existing line in build.prop)
dalvik.vm.heapsize=768m (there are 2 entries of this kindly remove/comment one and edit another existing line in build.prop)
dalvik.vm.heapstartsize=32m
dalvik.vm.heaptargetutilization=0.75
dalvik.vm.heapminfree=4m
dalvik.vm.heapmaxfree=32m
dalvik.vm.heapidealfree=16777216
dalvik.vm.heapconcurrentstart=4194304
persist.sys.dalvik.hyperthreading=true
dalvik.vm.image-dex2oat-filter=speed
dalvik.vm.dex2oat-filter=speed

3. Using power of Marshmallows Doze feature
default Doze activates after 30 minutes of inactivity which is too long and could compromise alot of battery juice till it kicks off so why not to kick it off earlier? let's do it

after installing latest version of app use the settings in my below screenshot

Parameter Descriptions
These are all direct from the Doze source code.

Inactive Timeout - inactive_to
This is the time, after becoming inactive, at which we start looking at the motion sensor to determine if the device is being left alone. We don't do this immediately after going inactive just because we don't want to be continually running the significant motion sensor whenever the screen is off.Sensing Timeout - sensing_to
If we don't receive a callback from AnyMotion in this amount of time + locating_to, we will change from STATE_SENSING to STATE_INACTIVE, and any AnyMotion callbacks while not in STATE_SENSING will be ignored.Locating Timeout - locating_to
This is how long we will wait to try to get a good location fix before going in to idle mode.Location Accuracy - location_accuracy
The desired maximum accuracy (in meters) we consider the location to be good enough to go on to idle. We will be trying to get an accuracy fix at least this good or until locating_to expires.Motion Inactive Timeout - motion_inactive_to
This is the time, after seeing motion, that we wait after becoming inactive from that until we start looking for motion again.Idle After Inactive Timeout - idle_after_inactive_to
This is the time, after the inactive timeout elapses, that we will wait looking for significant motion until we truly consider the device to be idle.Idle Pending Timeout - idle_pending_to
This is the initial time, after being idle, that we will allow ourself to be back in the IDLE_PENDING state allowing the system to run normally until we return to idle.Max Idle Pending Timeout - max_idle_pending_to
Maximum pending idle timeout (time spent running) we will be allowed to use.Idle Pending Factor - idle_pending_factor
Scaling factor to apply to current pending idle timeout each time we cycle through that state.Idle Timeout - idle_to
This is the initial time that we want to sit in the idle state before waking up again to return to pending idle and allowing normal work to run.Max Idle Timeout - max_idle_to
Maximum idle duration we will be allowed to use.Idle Factor - idle_factor
Scaling factor to apply to current idle timeout each time we cycle through that state.Min Time to Alarm - min_time_to_alarm
This is the minimum time we will allow until the next upcoming alarm for us to actually go in to idle mode.Max Temp App Whitelist Duration - max_temp_app_whitelist_duration
Max amount of time to temporarily whitelist an app when it receives a high tickle.MMS Temp App Whitelist Duration - mms_temp_app_whitelist_duration
Amount of time we would like to whitelist an app that is receiving an MMS.SMS Temp App Whitelist Duration - sms_temp_app_whitelist_duration
Amount of time we would like to whitelist an app that is receiving an SMS.

4. Optionally
Install Greenify only to hibernate rarely used apps do not use Aggresive Doze in settings of greenify if you will use doze editor in step 3

If anyone has any tip then please contribute

After applying these settings clear the cache from recovery if you are on unlocked bootloader or setting > storage > cached data > press ok

5. Init Scripts (for rooted phone)

5.1 If your root is systemless download following zip extract it and put scripts in /su/su.d folder and you don't need to follow step 5.25.2 if your root is not systemless (most of chinese stable/developer ROM) goto http://forum.xda-developers.com/showpost.php?p=32716412&postcount=2 and download init-term (do not use uni-init apk as init-term is much more intelligent script and works absolutly fine while APK is very old built that is not compatible with latest android) and follow the instructions to enable init.d support and copy attached scripts in system/etc/init.d folder.

change permissions to 0755 (rwxr-xr-x)
finally restart your phone and check /data/Logs folder if it doesn't exist it means init is not working otherwise you will see some Log files that will be updated on each restart

Description of Scriptsif you don't like to use any script you can simply delete it

00BatteryCalibratorIt calibrate battery once every 30 days, many developers and experts believe calibrating battery doesn't make any sense as it does caliberate itself once we fully charge our phone, but this script will help you if you are testing different Apps or Roms that doesn't show actual battery stats

01AppCacheCleanerit look for app cache inside /data/data folder and delete is once a week it helps to remove cache of apps that we don't use or have uninstalled them.

03SyscleanerThis script cleans additional temperory data such as logs by whatsapp and other system apps

6. Update Modem (Only if you modem is older version less then v61 or you are on stable globle ROM) *do not use this step for any other phone6.1 Take Full TWRP backup of your current ROM. and keep it on SD card or on your computer.

General Instructions How to check root is systemless or no
Look for the su folder in root of your device with any root explorer if your device has this it means root is systemless if su folder doesn't exist that means root is non-systemless also check for /system/etc/install-recovery.sh file it should be there if you can't find this file it means your ROM have buildin SU support and it is also non-systemless

How check Init Support before enabling it
go to /system/etc and look for folder init.d if it exist then probably your ROM have init support just copy attached scripts above into folder and restart your phone then check for log files in /data/Logs folder if you don't find any /data/Logs folder or logs inside it that mean init is not working you must use init-term script to enable it.

Enjoy Smooth experience with long battery life, share tips i would include them in post so they will help other users as well, comment your experience after using them

iam testing something really interesting that will surely help all of us to deal with standby drain. My phone battery was draining over 60% for hardware after setting these and using greenify it reduced to +50%..
new tips which i will share later on reduced hardware usage to <40%

Redmi Note 4 owners kindly confirm if you are facing same bugs as below to have smooth experience, Lets help developer rather then crying and spamming forum with duplicate and useless posts